Compare commits
	
		
			210 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					40d3340ac5 | ||
| 
						 | 
					9bb71d3df7 | ||
| 
						 | 
					4860447b06 | ||
| 
						 | 
					445b3f19a3 | ||
| 
						 | 
					32efd26999 | ||
| 
						 | 
					f2f95150bd | ||
| 
						 | 
					f210bf8812 | ||
| 
						 | 
					c30e1a2446 | ||
| 
						 | 
					10392fc08e | ||
| 
						 | 
					df10473fb5 | ||
| 
						 | 
					6505e7e85f | ||
| 
						 | 
					ffd80722b8 | ||
| 
						 | 
					6bd5bb3dda | ||
| 
						 | 
					83dec3c1d6 | ||
| 
						 | 
					82f2a83eec | ||
| 
						 | 
					5194af9d91 | ||
| 
						 | 
					a4c76d2fb9 | ||
| 
						 | 
					57a35075fa | ||
| 
						 | 
					fb69a60b45 | ||
| 
						 | 
					2625381e5b | ||
| 
						 | 
					1c048320a6 | ||
| 
						 | 
					c5c25cee7f | ||
| 
						 | 
					dee8177a67 | ||
| 
						 | 
					abbe040351 | ||
| 
						 | 
					29a0f849f1 | ||
| 
						 | 
					7e524f46c6 | ||
| 
						 | 
					1146e99de2 | ||
| 
						 | 
					6740929d41 | ||
| 
						 | 
					831788c1c9 | ||
| 
						 | 
					7e9d4520af | ||
| 
						 | 
					c4317e6e6b | ||
| 
						 | 
					e4e3debce0 | ||
| 
						 | 
					a5b7431070 | ||
| 
						 | 
					054808f59d | ||
| 
						 | 
					0b313d627e | ||
| 
						 | 
					9813b9db90 | ||
| 
						 | 
					9a4e024abb | ||
| 
						 | 
					04a669157f | ||
| 
						 | 
					a364c1512d | ||
| 
						 | 
					0451e6f0a6 | ||
| 
						 | 
					b7f87d9e82 | ||
| 
						 | 
					e2713fb57a | ||
| 
						 | 
					c8eff78d34 | ||
| 
						 | 
					04ca5793fa | ||
| 
						 | 
					83d00ee9c7 | ||
| 
						 | 
					bf56ed2540 | ||
| 
						 | 
					e75aba14b4 | ||
| 
						 | 
					5d2d2d416f | ||
| 
						 | 
					62799bfc9d | ||
| 
						 | 
					df8fbc3c03 | ||
| 
						 | 
					604de81ab8 | ||
| 
						 | 
					ed14b09567 | ||
| 
						 | 
					800758815c | ||
| 
						 | 
					058b74bd63 | ||
| 
						 | 
					02a52a4e09 | ||
| 
						 | 
					74ddc93f7f | ||
| 
						 | 
					eb8af0c81b | ||
| 
						 | 
					bd49274808 | ||
| 
						 | 
					8b1547c589 | ||
| 
						 | 
					c093f83848 | ||
| 
						 | 
					c0b28c38c5 | ||
| 
						 | 
					4621a0898f | ||
| 
						 | 
					6f02e1035f | ||
| 
						 | 
					d4ae9237a6 | ||
| 
						 | 
					914eb05a60 | ||
| 
						 | 
					4da17227c1 | ||
| 
						 | 
					20014cab29 | ||
| 
						 | 
					9d62361c8a | ||
| 
						 | 
					260992b7bf | ||
| 
						 | 
					b9cd429551 | ||
| 
						 | 
					2d18a75ad7 | ||
| 
						 | 
					0cfc501f83 | ||
| 
						 | 
					44b19153f1 | ||
| 
						 | 
					433b87b9df | ||
| 
						 | 
					f9464bcd6c | ||
| 
						 | 
					f5c5ec202a | ||
| 
						 | 
					4b64a70830 | ||
| 
						 | 
					4c8f7e298e | ||
| 
						 | 
					2d539be214 | ||
| 
						 | 
					c35d5814b4 | ||
| 
						 | 
					7d19ad401b | ||
| 
						 | 
					985577ce79 | ||
| 
						 | 
					24e20101d5 | ||
| 
						 | 
					76c884eb9f | ||
| 
						 | 
					7041dbab27 | ||
| 
						 | 
					661051fde4 | ||
| 
						 | 
					36cba5ce18 | ||
| 
						 | 
					4753f30c53 | ||
| 
						 | 
					d719e240d2 | ||
| 
						 | 
					e35faee278 | ||
| 
						 | 
					fd3417a09a | ||
| 
						 | 
					1719709648 | ||
| 
						 | 
					d37aa3378e | ||
| 
						 | 
					f017d32860 | ||
| 
						 | 
					7b23edcb29 | ||
| 
						 | 
					e48c4b4e84 | ||
| 
						 | 
					aeca44c7aa | ||
| 
						 | 
					af6ae8e419 | ||
| 
						 | 
					5cf88ba3b7 | ||
| 
						 | 
					f901ba5591 | ||
| 
						 | 
					7deea96bc3 | ||
| 
						 | 
					48dfb9bd08 | ||
| 
						 | 
					85372559fa | ||
| 
						 | 
					98972b80ef | ||
| 
						 | 
					d950244232 | ||
| 
						 | 
					fd898829c3 | ||
| 
						 | 
					b0158628bb | ||
| 
						 | 
					0f69a7b391 | ||
| 
						 | 
					72773117e5 | ||
| 
						 | 
					06806f5a6e | ||
| 
						 | 
					a01c785ec8 | ||
| 
						 | 
					502e206371 | ||
| 
						 | 
					8fba1bc6a9 | ||
| 
						 | 
					f43803d6d4 | ||
| 
						 | 
					338cba6350 | ||
| 
						 | 
					2a15066062 | ||
| 
						 | 
					add86bc566 | ||
| 
						 | 
					e9b4eaaeb9 | ||
| 
						 | 
					07605051f5 | ||
| 
						 | 
					998356484b | ||
| 
						 | 
					e97617ad60 | ||
| 
						 | 
					9685c3afa8 | ||
| 
						 | 
					c209b9a72f | ||
| 
						 | 
					4999b769ba | ||
| 
						 | 
					d8b5ba2161 | ||
| 
						 | 
					6f4a4a91cf | ||
| 
						 | 
					0049f0d72e | ||
| 
						 | 
					4ea66fc0fd | ||
| 
						 | 
					8426620572 | ||
| 
						 | 
					76aece0a3f | ||
| 
						 | 
					508e7f77a0 | ||
| 
						 | 
					d250a829cb | ||
| 
						 | 
					2fada0c31c | ||
| 
						 | 
					e6ad08733d | ||
| 
						 | 
					a8d83b5e1c | ||
| 
						 | 
					9392b74cbc | ||
| 
						 | 
					e09624efd0 | ||
| 
						 | 
					d4d7429de4 | ||
| 
						 | 
					b97cef86a3 | ||
| 
						 | 
					70615a172b | ||
| 
						 | 
					d399ca90d3 | ||
| 
						 | 
					bbc9695075 | ||
| 
						 | 
					c8fceeb75b | ||
| 
						 | 
					036cb4556e | ||
| 
						 | 
					e7b06a0b06 | ||
| 
						 | 
					c0067113e9 | ||
| 
						 | 
					ce4349a188 | ||
| 
						 | 
					224085dfca | ||
| 
						 | 
					9b3262a5fe | ||
| 
						 | 
					86856b6d54 | ||
| 
						 | 
					d5bf08329e | ||
| 
						 | 
					60efce8404 | ||
| 
						 | 
					83164f456a | ||
| 
						 | 
					c0141bcfee | ||
| 
						 | 
					8dfe9ef1cf | ||
| 
						 | 
					73d713b670 | ||
| 
						 | 
					db6c3573c1 | ||
| 
						 | 
					c8cbdaef8a | ||
| 
						 | 
					2c7243b87d | ||
| 
						 | 
					46515dd5d3 | ||
| 
						 | 
					7eb799adc6 | ||
| 
						 | 
					c85b61bbd0 | ||
| 
						 | 
					045ff8b789 | ||
| 
						 | 
					7b7f197439 | ||
| 
						 | 
					9e1c462836 | ||
| 
						 | 
					e97e8309cb | ||
| 
						 | 
					8c5be1a47d | ||
| 
						 | 
					afef2e6732 | ||
| 
						 | 
					7b2051b55c | ||
| 
						 | 
					8e470a2d72 | ||
| 
						 | 
					35213d5cb2 | ||
| 
						 | 
					b24f1a8ac4 | ||
| 
						 | 
					5454ab577e | ||
| 
						 | 
					046c15a074 | ||
| 
						 | 
					ddb9dda894 | ||
| 
						 | 
					d7047bda13 | ||
| 
						 | 
					c7934f4d10 | ||
| 
						 | 
					c97dc06177 | ||
| 
						 | 
					76b1faa159 | ||
| 
						 | 
					1e0438857e | ||
| 
						 | 
					b6494effa6 | ||
| 
						 | 
					a359184b83 | ||
| 
						 | 
					ce50a3f627 | ||
| 
						 | 
					ee7d254329 | ||
| 
						 | 
					d674b22b39 | ||
| 
						 | 
					47954aba8e | ||
| 
						 | 
					09e18e9b64 | ||
| 
						 | 
					163ba86196 | ||
| 
						 | 
					e57e7d99d5 | ||
| 
						 | 
					7ad449303b | ||
| 
						 | 
					49b853de1a | ||
| 
						 | 
					03a81ad4be | ||
| 
						 | 
					eb046b6a61 | ||
| 
						 | 
					1bf62f9524 | ||
| 
						 | 
					9aca213a5f | ||
| 
						 | 
					ce8bb68200 | ||
| 
						 | 
					7ee562c5ac | ||
| 
						 | 
					bdb719004d | ||
| 
						 | 
					842ac96d48 | ||
| 
						 | 
					5bb9011fb4 | ||
| 
						 | 
					97564f50b8 | ||
| 
						 | 
					efcf6a0db3 | ||
| 
						 | 
					9e813784f7 | ||
| 
						 | 
					aaca03062b | ||
| 
						 | 
					c1242017e2 | ||
| 
						 | 
					5f1426a0a3 | ||
| 
						 | 
					e84225fb23 | ||
| 
						 | 
					32c0e64bfb | ||
| 
						 | 
					0793ff31f5 | ||
| 
						 | 
					d3c2c1b607 | 
							
								
								
									
										31
									
								
								.github/issue_template.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.github/issue_template.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					<!--- Provide a general summary of the issue in the Title above -->
 | 
				
			||||||
 | 
					<!--- https://guides.github.com/features/mastering-markdown/#examples -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Expected Behavior
 | 
				
			||||||
 | 
					<!--- If you're describing a bug, tell us what should happen -->
 | 
				
			||||||
 | 
					<!--- If you're suggesting a change/improvement, tell us how it should work -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Current Behavior
 | 
				
			||||||
 | 
					<!--- If describing a bug, tell us what happens instead of the expected behavior -->
 | 
				
			||||||
 | 
					<!--- If suggesting a change/improvement, explain the difference from current behavior -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Possible Solution
 | 
				
			||||||
 | 
					<!--- Not obligatory, but suggest a fix/reason for the bug, -->
 | 
				
			||||||
 | 
					<!--- or ideas how to implement the addition or change -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Steps to Reproduce (for bugs)
 | 
				
			||||||
 | 
					<!--- Provide a link to a live example, or an unambiguous set of steps to -->
 | 
				
			||||||
 | 
					<!--- reproduce this bug. Include code to reproduce, if relevant, or attach screenshots -->
 | 
				
			||||||
 | 
					1. 
 | 
				
			||||||
 | 
					2. 
 | 
				
			||||||
 | 
					3. 
 | 
				
			||||||
 | 
					4. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Context
 | 
				
			||||||
 | 
					<!--- How has this issue affected you? What are you trying to accomplish? -->
 | 
				
			||||||
 | 
					<!--- Providing context helps us come up with a solution that is most useful in the real world -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Your Environment
 | 
				
			||||||
 | 
					<!--- Include as many relevant details about the environment you experienced the bug in -->
 | 
				
			||||||
 | 
					* SNMP::Info version used: 
 | 
				
			||||||
 | 
					* Netdisco version (if used): 
 | 
				
			||||||
							
								
								
									
										13
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +1,11 @@
 | 
				
			|||||||
*.db
 | 
					*.swp
 | 
				
			||||||
SNMP
 | 
					*.pid
 | 
				
			||||||
 | 
					test.pl
 | 
				
			||||||
 | 
					MYMETA.*
 | 
				
			||||||
 | 
					*.tar.gz
 | 
				
			||||||
 | 
					MANIFEST.*
 | 
				
			||||||
 | 
					*.komodo*
 | 
				
			||||||
 | 
					Makefile*
 | 
				
			||||||
 | 
					Build
 | 
				
			||||||
 | 
					_build
 | 
				
			||||||
 | 
					blib
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					language: perl
 | 
				
			||||||
 | 
					addons:
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    packages:
 | 
				
			||||||
 | 
					      - jq
 | 
				
			||||||
 | 
					      - libsnmp-dev
 | 
				
			||||||
 | 
					branches:
 | 
				
			||||||
 | 
					  only:
 | 
				
			||||||
 | 
					    - /^3\.\d{2}$/
 | 
				
			||||||
 | 
					    - 'master'
 | 
				
			||||||
 | 
					before_install:
 | 
				
			||||||
 | 
					  - mkdir ~/netdisco-mibs
 | 
				
			||||||
 | 
					  - cd ~/netdisco-mibs
 | 
				
			||||||
 | 
					install:
 | 
				
			||||||
 | 
					  - >
 | 
				
			||||||
 | 
					    curl -sL https://downloads.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz |
 | 
				
			||||||
 | 
					      tar --strip-components=1 -zxf -
 | 
				
			||||||
 | 
					  - cpanm --quiet --notest PkgConfig Test::CChecker Alien::zlib::Static Alien::OpenSSL::Static Alien::SNMP::MAXTC
 | 
				
			||||||
 | 
					before_script:
 | 
				
			||||||
 | 
					  - 'cd ${TRAVIS_BUILD_DIR}'
 | 
				
			||||||
 | 
					script:
 | 
				
			||||||
 | 
					  - >
 | 
				
			||||||
 | 
					    perl Build.PL &&
 | 
				
			||||||
 | 
					    PERL_MM_USE_DEFAULT=1 ./Build installdeps --cpan_client 'cpanm --quiet --notest' &&
 | 
				
			||||||
 | 
					    ./Build test --test_files t/ --test_files xt/
 | 
				
			||||||
 | 
					notifications:
 | 
				
			||||||
 | 
					  irc:
 | 
				
			||||||
 | 
					    on_success: change
 | 
				
			||||||
 | 
					    on_failure: always
 | 
				
			||||||
 | 
					    channels:
 | 
				
			||||||
 | 
					      - 'chat.freenode.net#netdisco'
 | 
				
			||||||
							
								
								
									
										43
									
								
								Build.PL
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Build.PL
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use warnings;
 | 
				
			||||||
 | 
					use Module::Build;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Module::Build->new(
 | 
				
			||||||
 | 
					  module_name => 'SNMP::Info',
 | 
				
			||||||
 | 
					  license     => 'bsd',
 | 
				
			||||||
 | 
					  dist_author => 'Eric A. Miller <emiller@cpan.org>',
 | 
				
			||||||
 | 
					  # dynamic_config => 1,
 | 
				
			||||||
 | 
					  create_readme => 1,
 | 
				
			||||||
 | 
					  configure_requires => {
 | 
				
			||||||
 | 
					    'Module::Build' => '0.42',
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  # build_requires => {
 | 
				
			||||||
 | 
					  # },
 | 
				
			||||||
 | 
					  requires => {
 | 
				
			||||||
 | 
					    'SNMP' => '0',
 | 
				
			||||||
 | 
					    'Math::BigInt' => '0',
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  recommends => {
 | 
				
			||||||
 | 
					    'PPI' => '0',
 | 
				
			||||||
 | 
					    'Class::ISA' => '0',
 | 
				
			||||||
 | 
					    'Module::Info' => '0',
 | 
				
			||||||
 | 
					    'Module::Load' => '0',
 | 
				
			||||||
 | 
					    'File::Slurp' => '0',
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  test_requires => {
 | 
				
			||||||
 | 
					    'Test::More' => '0.88',
 | 
				
			||||||
 | 
					    'Test::Distribution' => '0',
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  # script_files => [
 | 
				
			||||||
 | 
					  # ],
 | 
				
			||||||
 | 
					  # share_dir => 'share',
 | 
				
			||||||
 | 
					  meta_merge => {
 | 
				
			||||||
 | 
					    resources => {
 | 
				
			||||||
 | 
					      homepage => 'http://netdisco.org/',
 | 
				
			||||||
 | 
					      bugtracker => 'https://github.com/netdisco/snmp-info/issues',
 | 
				
			||||||
 | 
					      repository => 'https://github.com/netdisco/snmp-info',
 | 
				
			||||||
 | 
					      MailingList => 'https://lists.sourceforge.net/lists/listinfo/snmp-info-users',
 | 
				
			||||||
 | 
					      IRC => 'irc://irc.freenode.org/#netdisco',
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					)->create_build_script;
 | 
				
			||||||
@@ -1,4 +1,272 @@
 | 
				
			|||||||
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
 | 
					version 3.44 (2018-02-12)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Improve F10 OS version detection (laelly)
 | 
				
			||||||
 | 
					  * Better IPv6 prefix derivation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.43 (2018-02-02)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fix identification of Brocade CES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.42 (2018-02-02)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * IPv6 Prefix Length support via IPv6::ipv6_addr_prefixlength
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fix test for updated snmplabs.com data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.41 (2018-02-01)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fixes to distriution metadata
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.40 (2018-01-28)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * #240 Support for CheckPoint devies through SNMP
 | 
				
			||||||
 | 
					  * #240 Cisco SB switches fixup
 | 
				
			||||||
 | 
					  * #244 Add Adtran support
 | 
				
			||||||
 | 
					  * #241 Vyatta/VyOS support
 | 
				
			||||||
 | 
					  * #246 Nexus VRF support (works with Netdisco)
 | 
				
			||||||
 | 
					  * #244 Improve Juniper model reporting
 | 
				
			||||||
 | 
					  * #240 Improve H3C reporting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * #243 Nexus additional debug lines should be hidden
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.39 (2017-12-17)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * #236 Enhanced Ubiquiti device support (L. Begnaud)
 | 
				
			||||||
 | 
					  * add HP J9774A model (H. Teulahti)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * fix scripts (F. Mass)
 | 
				
			||||||
 | 
					  * fix CiscoASA typos (laelly)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.38 (2017-10-23)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Layer2::Airespace several newer 802.11 data rates added
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * #232 Improve generic Info::Layer3 serial number detection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.37 (2017-07-11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Layer3::Juniper fixed to return os_ver for JUNOS 14.x and higher
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.36 (2017-06-28)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Migrate to Module::Build for distribution maintenance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.35 (2017-06-28)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Include loading of LLDP-EXT-MED-MIB in LLDP.pm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * #180 support CiscoConfig on Nexus (sf.net:scratchfury)
 | 
				
			||||||
 | 
					  * #50 remove interface specific part from vrf interfaces on IOS (W. Vandersmissen)
 | 
				
			||||||
 | 
					  * #211 f5 class should respect UseEnums when faking i_type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.34 (2016-11-20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Support Cisco IPS Modules homed on the Cisco ASA (M. Kraus)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Serial number on Nexus 9372 (genereic check for ID before using) (M. Caines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.33 (2016-04-27)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Move author-only tests to xt directory so they aren't run on installation
 | 
				
			||||||
 | 
					    by users
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Correct device serial number reporting for Cisco Nexus 5k switches with
 | 
				
			||||||
 | 
					    software version >= 7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.32 (2016-04-26)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Add 200 Mbps and 2.0 Gbps aliases to SPEED_MAP
 | 
				
			||||||
 | 
					  * Add Palo Alto support
 | 
				
			||||||
 | 
					  * Add VMware support
 | 
				
			||||||
 | 
					  * Support for propMultiplexor as ifType
 | 
				
			||||||
 | 
					  * Add device MAC to APC UPS
 | 
				
			||||||
 | 
					  * [#61] Report APC model for PDU products
 | 
				
			||||||
 | 
					  * Removed DeviceMatrix from the distribution
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Support undefined (noSuchInstance) values in Offline mode
 | 
				
			||||||
 | 
					  * Do not init table cache if Cache provided by user
 | 
				
			||||||
 | 
					  * Avoid deep recusion when AUTOLOAD and carp collide
 | 
				
			||||||
 | 
					  * Detect Cisco VG350s as L3 devices instead of APs
 | 
				
			||||||
 | 
					  * fix for 'Use of inherited AUTOLOAD for non-method SNMP::Info::Layer2::HP::agg_ports_ifstack() is deprecated'
 | 
				
			||||||
 | 
					  * Workaround in IPv6.pm to deal with possibly incorrect IPV6-MIB implementations
 | 
				
			||||||
 | 
					  * [#71] AUTOLOAD typo-catcher search for SNMP::Info no longer anchored
 | 
				
			||||||
 | 
					  * [#70] Respect version/comm/secname on passed Session obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.31 (2016-01-22)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Support for CiscoSB OS and Version (D. Tuecks)
 | 
				
			||||||
 | 
					  * SONMP support for Enhanced Topology Table
 | 
				
			||||||
 | 
					  * Add support for channelized interfaces in L3::Passport
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Correct link to MIB tarball
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.30 (2015-11-16)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * RT #106254: Add new sysObjectID mapping for Ubiquiti
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Correct link to MIB tarball
 | 
				
			||||||
 | 
					  * Correct port indexing of newer VSP 4K and 8K in L3::Passport
 | 
				
			||||||
 | 
					  * Statistics in the sysIfxStatTable are 64-bit counters, so they should
 | 
				
			||||||
 | 
					    override the 64-bit methods.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.29 (2015-10-13)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Add IPv6::ipv6_addr() method to map IPv6 interface address indexes to actual addresses
 | 
				
			||||||
 | 
					  * Add support for (remote) IPv6 addresses to LLDP::lldp_addr()
 | 
				
			||||||
 | 
					  * Add LLDP::lldp_ipv6() and LLDP::lldp_mac() so that remote management
 | 
				
			||||||
 | 
					    addresses of specific types can be requested
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.28 (2015-06-18)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Add Layer3::Huawei class for Huawei Quidway switches
 | 
				
			||||||
 | 
					  * Modified generic Layer3::Cisco class: use community based indexing if
 | 
				
			||||||
 | 
					    the device returns a value for vtpVersion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Correct port indexing of VSP 4K in L3::Passport
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.27 (2015-05-05)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Cisco Aironet PSU information
 | 
				
			||||||
 | 
					  * Only log adding mibdirs at debug level 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * [#221] Drop Cisco Voice VLAN 4096
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.26 (2015-03-07)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Add fan and psu reporting to Layer3::Dell
 | 
				
			||||||
 | 
					  * Include Voice VLANs in (tagged) VLAN Membership on Cisco devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  * Fix typo in MRO::print_superclasses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.25 (2015-02-25)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Add new model name mappings for to Layer2::HP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.24 (2015-02-04)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Support RSTP and ieee8021d STP operating modes in RapidCity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Fix single instance leafs defined in %FUNCS to behave like table leafs
 | 
				
			||||||
 | 
					    * Fix incorrect FDB ID to VLAN ID mapping in Bridge and L3:Enterasys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.23 (2014-12-09)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Update MIB used in L1::Asante
 | 
				
			||||||
 | 
					    * Enhanced STP support for L3::Extreme
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Fix Cisco VLAN membership issue introduced in 3.22 related to capturing
 | 
				
			||||||
 | 
					      port VLANs on Cisco interfaces which are configured for trunking but
 | 
				
			||||||
 | 
					      are not in operational trunking mode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version 3.22 (2014-12-02)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [NEW FEATURES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Support obtaining FDB in Avaya SPBM edge deployments in L2::Baystack
 | 
				
			||||||
 | 
					      NOTE: This requires a RAPID-CITY MIB with the rcBridgeSpbmMacTable
 | 
				
			||||||
 | 
					    * Support for Fortinet devices in new class L3::Fortinet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * Include LLDP support in base Layer2 and Layer3 classes. Due to the
 | 
				
			||||||
 | 
					      widespread adoption of LLDP, this should improve mapping networks
 | 
				
			||||||
 | 
					      when devices aren't supported in a more specific class.
 | 
				
			||||||
 | 
					    * No longer ignore interfaces based on name, in base L2/L3/L7 device
 | 
				
			||||||
 | 
					      classes. For several device classes SNMP::Info will now return tunnel
 | 
				
			||||||
 | 
					      interfaces and/or loopbacks, if present.
 | 
				
			||||||
 | 
					    * Use dot1qVlanCurrentTable if available to capture dynamic and static
 | 
				
			||||||
 | 
					      VLANs, fall back to dot1qVlanStaticTable if not available.
 | 
				
			||||||
 | 
					    * New method i_vlan_membership_untagged() for VLANs transmitted as
 | 
				
			||||||
 | 
					      untagged frames.
 | 
				
			||||||
 | 
					    * Capture Aruba AP hardware and software version when available
 | 
				
			||||||
 | 
					    * New STP methods to support gathering information from devices running
 | 
				
			||||||
 | 
					      mutiple STP instances such as PVST and MST
 | 
				
			||||||
 | 
					    * Enhanced STP support for Avaya and Foundry classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * [#64] Misdetection: Wireless APs, add products MIB to L2::3Com
 | 
				
			||||||
 | 
					    * Use FDB ID to VID mapping if available to determine end station VLAN
 | 
				
			||||||
 | 
					      rather than assuming they are the same.
 | 
				
			||||||
 | 
					    * Capture port VLANs on Cisco interfaces which are configured for
 | 
				
			||||||
 | 
					      trunking but are not in operational trunking mode
 | 
				
			||||||
 | 
					    * Correct munging of stp_p_port(), i_stp_port(), and stp_root() methods
 | 
				
			||||||
 | 
					      in Bridge
 | 
				
			||||||
 | 
					    * In LLDP.pm don't create a variable in a conditional
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 3.20 (2014-09-08)
 | 
					version 3.20 (2014-09-08)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -63,7 +331,7 @@ version 3.16 (2014-06-23)
 | 
				
			|||||||
   [BUG FIXES]
 | 
					   [BUG FIXES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    * Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
 | 
					    * Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
 | 
				
			||||||
      solely relying on the interface description. 
 | 
					      solely relying on the interface description.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 3.15 (2014-07-10)
 | 
					version 3.15 (2014-07-10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -215,7 +483,7 @@ version 3.08 (2013-10-22)
 | 
				
			|||||||
    * [#68] Fix device_port entries for switches with non-unique
 | 
					    * [#68] Fix device_port entries for switches with non-unique
 | 
				
			||||||
      ifDesc (Nic Bernstein)
 | 
					      ifDesc (Nic Bernstein)
 | 
				
			||||||
    * Don't try to munge undef values
 | 
					    * Don't try to munge undef values
 | 
				
			||||||
    * [#49] Perl 5.18 UNIVERSAL::can change could cause infinite loop 
 | 
					    * [#49] Perl 5.18 UNIVERSAL::can change could cause infinite loop
 | 
				
			||||||
    * Silence warning from uninitialized variable in L3::Passport e_descr()
 | 
					    * Silence warning from uninitialized variable in L3::Passport e_descr()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 3.07 (2013-10-01)
 | 
					version 3.07 (2013-10-01)
 | 
				
			||||||
@@ -242,12 +510,11 @@ version 3.05 (2013-08-16)
 | 
				
			|||||||
      Layer2/CiscoSB class
 | 
					      Layer2/CiscoSB class
 | 
				
			||||||
    * Add proper LLDP support to Netgear.pm
 | 
					    * Add proper LLDP support to Netgear.pm
 | 
				
			||||||
    * Change $netgear->interfaces() to use ifName rather than ifDescr
 | 
					    * Change $netgear->interfaces() to use ifName rather than ifDescr
 | 
				
			||||||
      as the former is unique per interface while the latter is not.  
 | 
					      as the former is unique per interface while the latter is not.
 | 
				
			||||||
      If ifName is not present, concatenate ifDescr and ifIndex
 | 
					      If ifName is not present, concatenate ifDescr and ifIndex
 | 
				
			||||||
      to achieve a unique value.
 | 
					      to achieve a unique value.
 | 
				
			||||||
    * Properly report hardware version, Serial No. and OS Version for
 | 
					    * Properly report hardware version, Serial No. and OS Version for
 | 
				
			||||||
      Netgear.
 | 
					      Netgear.
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 3.03 (2013-07-11)
 | 
					version 3.03 (2013-07-11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -277,7 +544,7 @@ version 3.01 (2013-04-13)
 | 
				
			|||||||
      they can be called directly, sonmp_ip(), cdp_ip(), etc.
 | 
					      they can be called directly, sonmp_ip(), cdp_ip(), etc.
 | 
				
			||||||
    * L2::Bay and L2::Foundry have been removed from the distribution.  Both
 | 
					    * L2::Bay and L2::Foundry have been removed from the distribution.  Both
 | 
				
			||||||
      classes were depreciated and all functionality is available through
 | 
					      classes were depreciated and all functionality is available through
 | 
				
			||||||
      L2::Baystack and L3::Foundry. 
 | 
					      L2::Baystack and L3::Foundry.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [NEW FEATURES]
 | 
					    [NEW FEATURES]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -307,7 +574,7 @@ version 3.01 (2013-04-13)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    [ENHANCEMENTS]
 | 
					    [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    * UNIVERSAL::can() now works with dynamic methods 
 | 
					    * UNIVERSAL::can() now works with dynamic methods
 | 
				
			||||||
    * Dynamically generated methods are added to symbol table to avoid
 | 
					    * Dynamically generated methods are added to symbol table to avoid
 | 
				
			||||||
      AUTOLOAD on subsequent calls
 | 
					      AUTOLOAD on subsequent calls
 | 
				
			||||||
    * L2::Airespace now supports 802.11n client tx rates
 | 
					    * L2::Airespace now supports 802.11n client tx rates
 | 
				
			||||||
@@ -339,20 +606,20 @@ version 2.09 (2012-11-28)
 | 
				
			|||||||
    * New method i_ssidmac() to get BSSID's from AP's with initial support
 | 
					    * New method i_ssidmac() to get BSSID's from AP's with initial support
 | 
				
			||||||
      in L2::Aironet and Airespace classes
 | 
					      in L2::Aironet and Airespace classes
 | 
				
			||||||
    * Support for Avaya Secure Routers in new class L3::Tasman
 | 
					    * Support for Avaya Secure Routers in new class L3::Tasman
 | 
				
			||||||
    * Add EDP and LLDP L2 Topology to L3::Extreme 
 | 
					    * Add EDP and LLDP L2 Topology to L3::Extreme
 | 
				
			||||||
    * [3185393] Support for Juniper SSL VPN in new class L7::Neoteris
 | 
					    * [3185393] Support for Juniper SSL VPN in new class L7::Neoteris
 | 
				
			||||||
    * [3381027] Support for Cisco Nexus in new class L3::Nexus   
 | 
					    * [3381027] Support for Cisco Nexus in new class L3::Nexus
 | 
				
			||||||
    * [1424336] Support for Extreme Discovery Protocol (EDP)
 | 
					    * [1424336] Support for Extreme Discovery Protocol (EDP)
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    [ENHANCEMENTS]
 | 
					    [ENHANCEMENTS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    * [3017571] Add LLDP support for NetSNMP device class (begemot) 
 | 
					    * [3017571] Add LLDP support for NetSNMP device class (begemot)
 | 
				
			||||||
    * [3418918] Extreme devices now report OS as either extremeware or xos
 | 
					    * [3418918] Extreme devices now report OS as either extremeware or xos
 | 
				
			||||||
    * [2809045] Strip preceding netscreen from model name in L3::Netscreen
 | 
					    * [2809045] Strip preceding netscreen from model name in L3::Netscreen
 | 
				
			||||||
    * [] Classify Linksys 2024 as L3::Dell (Rogier Krieger)
 | 
					    * [] Classify Linksys 2024 as L3::Dell (Rogier Krieger)
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    [BUG FIXES]
 | 
					    [BUG FIXES]
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    * Fixed logic to return cached data for table methods when available and
 | 
					    * Fixed logic to return cached data for table methods when available and
 | 
				
			||||||
      not a partial fetch
 | 
					      not a partial fetch
 | 
				
			||||||
    * Fix typo in PoD for Bridge.pm and CiscoConfig.pm (William Bulley)
 | 
					    * Fix typo in PoD for Bridge.pm and CiscoConfig.pm (William Bulley)
 | 
				
			||||||
@@ -372,7 +639,7 @@ version 2.08 (2012-07-15)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    * Pseudo ENTITY-MIB methods added to L3::Juniper for hardware information
 | 
					    * Pseudo ENTITY-MIB methods added to L3::Juniper for hardware information
 | 
				
			||||||
    * Add method to report current transmit power of the radio interface,
 | 
					    * Add method to report current transmit power of the radio interface,
 | 
				
			||||||
      dot11_cur_tx_pwr_mw(), in Airespace class 
 | 
					      dot11_cur_tx_pwr_mw(), in Airespace class
 | 
				
			||||||
    * [3085411] Activate L3 properties for Netgear GSM7224v2 (phishphreek)
 | 
					    * [3085411] Activate L3 properties for Netgear GSM7224v2 (phishphreek)
 | 
				
			||||||
    * [3085413] SNMP OIDs for Netgear Serial and OS Ver (phishphreek)
 | 
					    * [3085413] SNMP OIDs for Netgear Serial and OS Ver (phishphreek)
 | 
				
			||||||
    * [3286549] Dell LLDP Support (Nico Giefing)
 | 
					    * [3286549] Dell LLDP Support (Nico Giefing)
 | 
				
			||||||
@@ -421,7 +688,7 @@ version 2.06 (2011-09-28)
 | 
				
			|||||||
    * [3344843] Fix returning serial() and os_ver() for web-managable HP
 | 
					    * [3344843] Fix returning serial() and os_ver() for web-managable HP
 | 
				
			||||||
      switches, introduced by HP/HP4000 class split, reported by J R Binks
 | 
					      switches, introduced by HP/HP4000 class split, reported by J R Binks
 | 
				
			||||||
    * [2809033] Put L2-only Cisco blade switches in L3::C6500
 | 
					    * [2809033] Put L2-only Cisco blade switches in L3::C6500
 | 
				
			||||||
    * [3408506] Fix uninitialized value in IPv6 when neighbor state is 
 | 
					    * [3408506] Fix uninitialized value in IPv6 when neighbor state is
 | 
				
			||||||
      incomplete (Michael Borgelt)
 | 
					      incomplete (Michael Borgelt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 2.05 (2011-06-23)
 | 
					version 2.05 (2011-06-23)
 | 
				
			||||||
@@ -437,13 +704,13 @@ version 2.04 (2011-03-31)
 | 
				
			|||||||
      (Brian De Wolf)
 | 
					      (Brian De Wolf)
 | 
				
			||||||
    + Added L3::Pf for FreeBSD PFSense Firewalls (max)
 | 
					    + Added L3::Pf for FreeBSD PFSense Firewalls (max)
 | 
				
			||||||
    * Added specific functions for neighbor mgmt addresses to CDP class
 | 
					    * Added specific functions for neighbor mgmt addresses to CDP class
 | 
				
			||||||
    * Implemented os_bin() method in CiscoStats 
 | 
					    * Implemented os_bin() method in CiscoStats
 | 
				
			||||||
    + [2980787] Fix for C1900 bp_index not containing interfaces.
 | 
					    + [2980787] Fix for C1900 bp_index not containing interfaces.
 | 
				
			||||||
      (Brian De Wolf)
 | 
					      (Brian De Wolf)
 | 
				
			||||||
    + [2599795] Added vendor_i_type() method to HP and HP4000 clases
 | 
					    + [2599795] Added vendor_i_type() method to HP and HP4000 clases
 | 
				
			||||||
    + [2688801] Minor modification for obscure Proxim/Orinoco device
 | 
					    + [2688801] Minor modification for obscure Proxim/Orinoco device
 | 
				
			||||||
      (jrbinks)
 | 
					      (jrbinks)
 | 
				
			||||||
    + [3051443] Add PoE measured power per port to Cisco, Extrme and HP 
 | 
					    + [3051443] Add PoE measured power per port to Cisco, Extrme and HP
 | 
				
			||||||
      classes (jeroenvi)
 | 
					      classes (jeroenvi)
 | 
				
			||||||
    * Minor tweaks to support devices without sysServices
 | 
					    * Minor tweaks to support devices without sysServices
 | 
				
			||||||
    * Added Cisco CBS3xxx blade switches to L3::C6500
 | 
					    * Added Cisco CBS3xxx blade switches to L3::C6500
 | 
				
			||||||
@@ -481,7 +748,7 @@ version 2.00 (08/01/08)
 | 
				
			|||||||
    + Support for Alcatel-Lucent Service Router via L3::Timetra
 | 
					    + Support for Alcatel-Lucent Service Router via L3::Timetra
 | 
				
			||||||
    + Support for Alcatel-Lucent OmniAccess via L2::Aruba
 | 
					    + Support for Alcatel-Lucent OmniAccess via L2::Aruba
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    * Silence warnings in MAU due to uninitialized variables 
 | 
					    * Silence warnings in MAU due to uninitialized variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 1.09 (07/22/08) - Beta/developer release
 | 
					version 1.09 (07/22/08) - Beta/developer release
 | 
				
			||||||
    + Added support for HP ProCurve Foundry OEM switches, such as the 9300
 | 
					    + Added support for HP ProCurve Foundry OEM switches, such as the 9300
 | 
				
			||||||
@@ -505,7 +772,7 @@ version 1.09 (07/22/08) - Beta/developer release
 | 
				
			|||||||
    + Add support to specify MIB to resolve leaf names conflicts in
 | 
					    + Add support to specify MIB to resolve leaf names conflicts in
 | 
				
			||||||
      %GLOBALS and %FUNCS.
 | 
					      %GLOBALS and %FUNCS.
 | 
				
			||||||
    + Added munge_port_list() and modify_port_list() methods to assist in
 | 
					    + Added munge_port_list() and modify_port_list() methods to assist in
 | 
				
			||||||
      working with PortList objects. 
 | 
					      working with PortList objects.
 | 
				
			||||||
    + Added set_multi() method to enable a SNMP set command on several new
 | 
					    + Added set_multi() method to enable a SNMP set command on several new
 | 
				
			||||||
      values in one request.  Required for complex set operations
 | 
					      values in one request.  Required for complex set operations
 | 
				
			||||||
      on some agents.
 | 
					      on some agents.
 | 
				
			||||||
@@ -532,7 +799,7 @@ version 1.05 (11/25/07) - CVS only. No official release
 | 
				
			|||||||
      Augenstein)
 | 
					      Augenstein)
 | 
				
			||||||
    + Added device specific support for LLDP in L2::HP, L2::Baystack,
 | 
					    + Added device specific support for LLDP in L2::HP, L2::Baystack,
 | 
				
			||||||
      L3::Enterasys and L3::Foundry
 | 
					      L3::Enterasys and L3::Foundry
 | 
				
			||||||
    + Added support for Enterasys devices as new class L3::Enterasys 
 | 
					    + Added support for Enterasys devices as new class L3::Enterasys
 | 
				
			||||||
    + Added support for Dell PowerConnect switches as new class L3::Dell
 | 
					    + Added support for Dell PowerConnect switches as new class L3::Dell
 | 
				
			||||||
    + Added basic support for generic routers running Microsoft Windows OS
 | 
					    + Added basic support for generic routers running Microsoft Windows OS
 | 
				
			||||||
      as new class L3::Microsoft (begemot)
 | 
					      as new class L3::Microsoft (begemot)
 | 
				
			||||||
@@ -543,7 +810,7 @@ version 1.05 (11/25/07) - CVS only. No official release
 | 
				
			|||||||
    + Added support for Cisco (Airespace) wireless controllers as new class
 | 
					    + Added support for Cisco (Airespace) wireless controllers as new class
 | 
				
			||||||
      L2::Airespace
 | 
					      L2::Airespace
 | 
				
			||||||
    + Added support for Nortel Ethernet Routing Switch 2500 series and
 | 
					    + Added support for Nortel Ethernet Routing Switch 2500 series and
 | 
				
			||||||
      Business Ethernet Switches (David Siebörger)
 | 
					      Business Ethernet Switches (David Siebörger)
 | 
				
			||||||
    + Update of L3::Foundry to support all Foundry devices including newer
 | 
					    + Update of L3::Foundry to support all Foundry devices including newer
 | 
				
			||||||
      switches.  Depreciate L2::Foundry.
 | 
					      switches.  Depreciate L2::Foundry.
 | 
				
			||||||
    + Added generic device type detection using IANA assigned enterpise
 | 
					    + Added generic device type detection using IANA assigned enterpise
 | 
				
			||||||
@@ -556,7 +823,7 @@ version 1.05 (11/25/07) - CVS only. No official release
 | 
				
			|||||||
    + New class IEEE802dot11 class for generic standards based wireless AP
 | 
					    + New class IEEE802dot11 class for generic standards based wireless AP
 | 
				
			||||||
      support to include i_ssidlist()and i_80211channel() methods.
 | 
					      support to include i_ssidlist()and i_80211channel() methods.
 | 
				
			||||||
    + L2::Orinoco inherits from new IEEE802dot11 for i_ssidlist()and
 | 
					    + L2::Orinoco inherits from new IEEE802dot11 for i_ssidlist()and
 | 
				
			||||||
      i_80211channel() support. 
 | 
					      i_80211channel() support.
 | 
				
			||||||
    + Added new VLAN methods i_pvid(), i_vlan_membership(), set_i_pvid(),
 | 
					    + Added new VLAN methods i_pvid(), i_vlan_membership(), set_i_pvid(),
 | 
				
			||||||
      set_i_vlan(), set_add_i_vlan_tagged(), set_remove_i_vlan_tagged() to
 | 
					      set_i_vlan(), set_add_i_vlan_tagged(), set_remove_i_vlan_tagged() to
 | 
				
			||||||
      Bridge, CiscoVTP, Extreme, HP, and RapidCity classes.
 | 
					      Bridge, CiscoVTP, Extreme, HP, and RapidCity classes.
 | 
				
			||||||
@@ -618,14 +885,14 @@ version 1.04 (07/08/06)
 | 
				
			|||||||
    +  Added C1130 and C1240 to L2::Aironet (Ralf Gross)
 | 
					    +  Added C1130 and C1240 to L2::Aironet (Ralf Gross)
 | 
				
			||||||
    +  Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
 | 
					    +  Added detection for Cisco 2960, 2940, 3400 w/ MetroBase
 | 
				
			||||||
    +  Added generic L2::Cisco Class
 | 
					    +  Added generic L2::Cisco Class
 | 
				
			||||||
    *  Corrected detection for Cisco Supervisor Engine 2 and 32 (IOS).  
 | 
					    *  Corrected detection for Cisco Supervisor Engine 2 and 32 (IOS).
 | 
				
			||||||
    *  Fixed warnings in CiscoStack
 | 
					    *  Fixed warnings in CiscoStack
 | 
				
			||||||
    *  Updated ProCurve HP device detection for newer firmwares
 | 
					    *  Updated ProCurve HP device detection for newer firmwares
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 1.03 (04/14/06) - Beta/developer release
 | 
					version 1.03 (04/14/06) - Beta/developer release
 | 
				
			||||||
    * Use ipNetToMedia table instead of atTable for ARP
 | 
					    * Use ipNetToMedia table instead of atTable for ARP
 | 
				
			||||||
    * Remove CiscoStack from Layer3::C4000
 | 
					    * Remove CiscoStack from Layer3::C4000
 | 
				
			||||||
    * Fixed bug in MAU class when polling devices without MAU-MIB support 
 | 
					    * Fixed bug in MAU class when polling devices without MAU-MIB support
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 1.01 (04/08/06) - Beta/developer release
 | 
					version 1.01 (04/08/06) - Beta/developer release
 | 
				
			||||||
    + Change version numbers to X.XX format.  Odd releases are beta
 | 
					    + Change version numbers to X.XX format.  Odd releases are beta
 | 
				
			||||||
@@ -691,15 +958,15 @@ version 1.0 (04/07/06) - CVS only. No official release
 | 
				
			|||||||
      translated properly
 | 
					      translated properly
 | 
				
			||||||
 | 
					
 | 
				
			||||||
verison 0.9 (11/15/04)
 | 
					verison 0.9 (11/15/04)
 | 
				
			||||||
    + ** Added full Nortel/Bay/BayStack support 
 | 
					    + ** Added full Nortel/Bay/BayStack support
 | 
				
			||||||
        by new developer Eric Miller.  
 | 
					        by new developer Eric Miller.
 | 
				
			||||||
        L2::Bay now depricated.
 | 
					        L2::Bay now depricated.
 | 
				
			||||||
    + Added Alteon Ace support (Eric Miller)
 | 
					    + Added Alteon Ace support (Eric Miller)
 | 
				
			||||||
    + Added Nortel Cotivity support (Eric Miller)
 | 
					    + Added Nortel Cotivity support (Eric Miller)
 | 
				
			||||||
    + Added Nortel BayRS support (Eric Miller)
 | 
					    + Added Nortel BayRS support (Eric Miller)
 | 
				
			||||||
    + Added Nortel Centillion support (Eric Miller)
 | 
					    + Added Nortel Centillion support (Eric Miller)
 | 
				
			||||||
    + Added Nortel AP 222x support (Eric Miller)
 | 
					    + Added Nortel AP 222x support (Eric Miller)
 | 
				
			||||||
    + Added Orinco AP support (Eric Miller) 
 | 
					    + Added Orinco AP support (Eric Miller)
 | 
				
			||||||
    + Added i_lastchange() per suggestion of Nicolai Petri
 | 
					    + Added i_lastchange() per suggestion of Nicolai Petri
 | 
				
			||||||
    + Added BULKWALK patch by Bradley Baetz - This should
 | 
					    + Added BULKWALK patch by Bradley Baetz - This should
 | 
				
			||||||
          greatly speed up requests on SNMPv2c devices.
 | 
					          greatly speed up requests on SNMPv2c devices.
 | 
				
			||||||
@@ -749,27 +1016,27 @@ version 0.6 (06/18/03)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
version 0.5 (06/10/03)
 | 
					version 0.5 (06/10/03)
 | 
				
			||||||
    * Added ability to get paritial tables.  For example to get the
 | 
					    * Added ability to get paritial tables.  For example to get the
 | 
				
			||||||
      IP routing table for 128.114.*  you can do 
 | 
					      IP routing table for 128.114.*  you can do
 | 
				
			||||||
      $ipr = $dev->ipr_dest('128.114');
 | 
					      $ipr = $dev->ipr_dest('128.114');
 | 
				
			||||||
    * Added IP Routing Table entries from RFC1213 to SNMP::Info
 | 
					    * Added IP Routing Table entries from RFC1213 to SNMP::Info
 | 
				
			||||||
    * minor bug fixes
 | 
					    * minor bug fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version 0.4 (04/29/03)
 | 
					version 0.4 (04/29/03)
 | 
				
			||||||
    * BIG CHANGE ! Internal Data structure has changed.  
 | 
					    * BIG CHANGE ! Internal Data structure has changed.
 | 
				
			||||||
    * Added clear_cache() method
 | 
					    * Added clear_cache() method
 | 
				
			||||||
    * Added NO_SUCH support for snmpget (TABLE) calls to get SNMP MIB II data 
 | 
					    * Added NO_SUCH support for snmpget (TABLE) calls to get SNMP MIB II data
 | 
				
			||||||
      from SNMP Version 1 devices.
 | 
					      from SNMP Version 1 devices.
 | 
				
			||||||
    * Methods load_all() and all() have changed their return value. Sorry but
 | 
					    * Methods load_all() and all() have changed their return value. Sorry but
 | 
				
			||||||
      the API had to change.
 | 
					      the API had to change.
 | 
				
			||||||
    * New object methods snmp_comm(), snmp_ver(), store(), class(), nosuch()
 | 
					    * New object methods snmp_comm(), snmp_ver(), store(), class(), nosuch()
 | 
				
			||||||
      to make it more OO happy.
 | 
					      to make it more OO happy.
 | 
				
			||||||
    * Globals are now cached
 | 
					    * Globals are now cached
 | 
				
			||||||
    * Added new argument 'AutoSpecify' to new() to auto-connect with subclass 
 | 
					    * Added new argument 'AutoSpecify' to new() to auto-connect with subclass
 | 
				
			||||||
      detected in device_type()
 | 
					      detected in device_type()
 | 
				
			||||||
    * New method specify() returns a new subclass object
 | 
					    * New method specify() returns a new subclass object
 | 
				
			||||||
    * Subclasses are automatically loaded when specify or autospecify is used!
 | 
					    * Subclasses are automatically loaded when specify or autospecify is used!
 | 
				
			||||||
    * Added methods for Interface statistics (ifInOctets ...)
 | 
					    * Added methods for Interface statistics (ifInOctets ...)
 | 
				
			||||||
    * Added methods for Memory and CPU statistics 
 | 
					    * Added methods for Memory and CPU statistics
 | 
				
			||||||
    * Added SNMP::Info::Entity, moved out of L2-HP
 | 
					    * Added SNMP::Info::Entity, moved out of L2-HP
 | 
				
			||||||
    * Added SNMP::Info::Layer2::Aironet
 | 
					    * Added SNMP::Info::Layer2::Aironet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -782,7 +1049,7 @@ version 0.3 (03/06/03)
 | 
				
			|||||||
      Thanks to Martin Lorensen <martin /at- lorensen.dk>
 | 
					      Thanks to Martin Lorensen <martin /at- lorensen.dk>
 | 
				
			||||||
    * Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
 | 
					    * Removed requirement for SNMP in the Makefile.PL and moved it to t/prereq.t
 | 
				
			||||||
      so that the Module will install via CPAN without trying to install the old
 | 
					      so that the Module will install via CPAN without trying to install the old
 | 
				
			||||||
      4.2.0 version of SNMP on CPAN.  Will now fail in the test phase. 
 | 
					      4.2.0 version of SNMP on CPAN.  Will now fail in the test phase.
 | 
				
			||||||
      Thanks again to Martin Lorensen <martin /at- lorensen.dk>
 | 
					      Thanks again to Martin Lorensen <martin /at- lorensen.dk>
 | 
				
			||||||
    * Moved tests from test.pl to t/*
 | 
					    * Moved tests from test.pl to t/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -792,10 +1059,10 @@ version 0.2 (02/19/03)
 | 
				
			|||||||
    * Fixed HP Detection in device_type()
 | 
					    * Fixed HP Detection in device_type()
 | 
				
			||||||
    * Added Spanning Tree Protocol (STP) methods to SNMP::Info::Bridge
 | 
					    * Added Spanning Tree Protocol (STP) methods to SNMP::Info::Bridge
 | 
				
			||||||
    * Removed HP Specific MIBS in SNMP::Info::Layer2 and cleaned up model()
 | 
					    * Removed HP Specific MIBS in SNMP::Info::Layer2 and cleaned up model()
 | 
				
			||||||
    * Added poke for Bay 450 Switches 
 | 
					    * Added poke for Bay 450 Switches
 | 
				
			||||||
    * Mapped HP Part Numbers to model numbers J4812A => 2512 in
 | 
					    * Mapped HP Part Numbers to model numbers J4812A => 2512 in
 | 
				
			||||||
      SNMP::Info::Layer2::HP
 | 
					      SNMP::Info::Layer2::HP
 | 
				
			||||||
     
 | 
					
 | 
				
			||||||
version 0.1 (12/30/02)
 | 
					version 0.1 (12/30/02)
 | 
				
			||||||
    * Initial Release
 | 
					    * Initial Release
 | 
				
			||||||
    * SubClasses Included:
 | 
					    * SubClasses Included:
 | 
				
			||||||
@@ -805,13 +1072,13 @@ version 0.1 (12/30/02)
 | 
				
			|||||||
        * SNMP::Info::MAU
 | 
					        * SNMP::Info::MAU
 | 
				
			||||||
        * SNMP::Info::Layer1
 | 
					        * SNMP::Info::Layer1
 | 
				
			||||||
              o SNMP::Info::Layer1::Allied
 | 
					              o SNMP::Info::Layer1::Allied
 | 
				
			||||||
              o SNMP::Info::Layer1::Asante 
 | 
					              o SNMP::Info::Layer1::Asante
 | 
				
			||||||
        * SNMP::Info::Layer2
 | 
					        * SNMP::Info::Layer2
 | 
				
			||||||
              o SNMP::Info::Layer2::Bay
 | 
					              o SNMP::Info::Layer2::Bay
 | 
				
			||||||
              o SNMP::Info::Layer2::C1900
 | 
					              o SNMP::Info::Layer2::C1900
 | 
				
			||||||
              o SNMP::Info::Layer2::C2900
 | 
					              o SNMP::Info::Layer2::C2900
 | 
				
			||||||
              o SNMP::Info::Layer2::Catalyst
 | 
					              o SNMP::Info::Layer2::Catalyst
 | 
				
			||||||
              o SNMP::Info::Layer2::HP 
 | 
					              o SNMP::Info::Layer2::HP
 | 
				
			||||||
        * SNMP::Info::Layer3
 | 
					        * SNMP::Info::Layer3
 | 
				
			||||||
              o SNMP::Info::Layer3::Aironet
 | 
					              o SNMP::Info::Layer3::Aironet
 | 
				
			||||||
              o SNMP::Info::Layer3::Foundry
 | 
					              o SNMP::Info::Layer3::Foundry
 | 
				
			||||||
							
								
								
									
										1045
									
								
								DeviceMatrix.txt
									
									
									
									
									
								
							
							
						
						
									
										1045
									
								
								DeviceMatrix.txt
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,177 +0,0 @@
 | 
				
			|||||||
# SNMP::Info::Layer2::Ubiquiti
 | 
					 | 
				
			||||||
# $Id$
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package SNMP::Info::Layer2::Ubiquiti;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use strict;
 | 
					 | 
				
			||||||
use Exporter;
 | 
					 | 
				
			||||||
use SNMP::Info::IEEE802dot11;
 | 
					 | 
				
			||||||
use SNMP::Info::Layer2;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@SNMP::Info::Layer2::Ubiquiti::ISA
 | 
					 | 
				
			||||||
    = qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
 | 
					 | 
				
			||||||
@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$VERSION = '3.20';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%MIBS = (
 | 
					 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					 | 
				
			||||||
    %SNMP::Info::IEEE802dot11::MIBS,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%GLOBALS
 | 
					 | 
				
			||||||
    = ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%FUNCS = (
 | 
					 | 
				
			||||||
    %SNMP::Info::Layer2::FUNCS,
 | 
					 | 
				
			||||||
    %SNMP::Info::IEEE802dot11::FUNCS,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::IEEE802dot11::MUNGE, );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub os {
 | 
					 | 
				
			||||||
    return 'Ubiquiti';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub os_ver {
 | 
					 | 
				
			||||||
    my $dot11 = shift;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my $versions = $dot11->dot11_prod_ver();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    foreach my $iid ( keys %$versions ) {
 | 
					 | 
				
			||||||
        my $ver = $versions->{$iid};
 | 
					 | 
				
			||||||
        next unless defined $ver;
 | 
					 | 
				
			||||||
	return $ver;
 | 
					 | 
				
			||||||
        if ( $ver =~ /([\d\.]+)/ ) {
 | 
					 | 
				
			||||||
            return $1;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub vendor {
 | 
					 | 
				
			||||||
    return 'Ubiquiti Networks, Inc.';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub model {
 | 
					 | 
				
			||||||
    my $dot11 = shift;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my $names = $dot11->dot11_prod_name();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    foreach my $iid ( keys %$names ) {
 | 
					 | 
				
			||||||
        my $prod = $names->{$iid};
 | 
					 | 
				
			||||||
        next unless defined $prod;
 | 
					 | 
				
			||||||
        return $prod;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1;
 | 
					 | 
				
			||||||
__END__
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head1 NAME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Access Points
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head1 AUTHOR
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Max Kosmach
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head1 SYNOPSIS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 # Let SNMP::Info determine the correct subclass for you. 
 | 
					 | 
				
			||||||
 my $ubnt = new SNMP::Info(
 | 
					 | 
				
			||||||
                          AutoSpecify => 1,
 | 
					 | 
				
			||||||
                          Debug       => 1,
 | 
					 | 
				
			||||||
                          DestHost    => 'myswitch',
 | 
					 | 
				
			||||||
                          Community   => 'public',
 | 
					 | 
				
			||||||
                          Version     => 2
 | 
					 | 
				
			||||||
                        ) 
 | 
					 | 
				
			||||||
    or die "Can't connect to DestHost.\n";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 my $class = $ubnt->class();
 | 
					 | 
				
			||||||
 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head1 DESCRIPTION
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Provides abstraction to the configuration information obtainable from
 | 
					 | 
				
			||||||
Ubiquiti Access Point through SNMP.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
For speed or debugging purposes you can call the subclass directly, but not
 | 
					 | 
				
			||||||
after determining a more specific class using the method above. 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Inherited Classes
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=over
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item SNMP::Info::Layer2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item SNMP::Info::IEEE802dot11
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=back
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Required MIBs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
None.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Inherited MIBs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See L<SNMP::Info::IEEE802dot11/"Required MIBs"> for its MIB requirements.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head1 GLOBALS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
These are methods that return scalar value from SNMP
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=over
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item $ubnt->vendor()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns 'Ubiquiti Networks, Inc.'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item $ubnt->model()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns the model extracted from C<dot11manufacturerProductName>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item $ubnt->os()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns 'Ubiquiti'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item $ubnt->os_ver()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns the software version extracted from C<dot11manufacturerProductVersion>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=back
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Global Methods imported from SNMP::Info::Layer2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See L<SNMP::Info::Layer2/"GLOBALS"> for details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Global Methods imported from SNMP::Info::IEEE802dot11
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See L<SNMP::Info::IEEE802dot11/"GLOBALS"> for details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head1 TABLE METHODS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
These are methods that return tables of information in the form of a reference
 | 
					 | 
				
			||||||
to a hash.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::Layer2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::IEEE802dot11
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See L<SNMP::Info::IEEE802dot11/"TABLE METHODS"> for details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=cut
 | 
					 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
All code from version 0.7 on
 | 
					All code from version 0.7 on
 | 
				
			||||||
Copyright (c) 2003-2009 Max Baker and SNMP::Info Developers
 | 
					Copyright (c) 2003-2016 Max Baker and SNMP::Info Developers
 | 
				
			||||||
All rights reserved.
 | 
					All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Original Code
 | 
					Original Code
 | 
				
			||||||
							
								
								
									
										263
									
								
								MANIFEST
									
									
									
									
									
								
							
							
						
						
									
										263
									
								
								MANIFEST
									
									
									
									
									
								
							@@ -1,124 +1,143 @@
 | 
				
			|||||||
ChangeLog
 | 
					Build.PL
 | 
				
			||||||
COPYRIGHT
 | 
					Changes
 | 
				
			||||||
DEVELOP
 | 
					contrib/DEVELOP
 | 
				
			||||||
DeviceMatrix.txt
 | 
					contrib/util/docmunge
 | 
				
			||||||
Info.pm
 | 
					contrib/util/make_dev_matrix.pl
 | 
				
			||||||
Info/AdslLine.pm
 | 
					contrib/util/make_snmpdata.pl
 | 
				
			||||||
Info/Aggregate.pm
 | 
					contrib/util/push_ver
 | 
				
			||||||
Info/Airespace.pm
 | 
					contrib/util/run_test
 | 
				
			||||||
Info/AMAP.pm
 | 
					contrib/util/test_class.pl
 | 
				
			||||||
Info/Bridge.pm
 | 
					contrib/util/test_class_mocked.pl
 | 
				
			||||||
Info/CDP.pm
 | 
					lib/SNMP/Info.pm
 | 
				
			||||||
Info/CiscoAgg.pm
 | 
					lib/SNMP/Info/AdslLine.pm
 | 
				
			||||||
Info/CiscoConfig.pm
 | 
					lib/SNMP/Info/Aggregate.pm
 | 
				
			||||||
Info/CiscoPortSecurity.pm
 | 
					lib/SNMP/Info/Airespace.pm
 | 
				
			||||||
Info/CiscoPower.pm
 | 
					lib/SNMP/Info/AMAP.pm
 | 
				
			||||||
Info/CiscoQOS.pm
 | 
					lib/SNMP/Info/Bridge.pm
 | 
				
			||||||
Info/CiscoRTT.pm
 | 
					lib/SNMP/Info/CDP.pm
 | 
				
			||||||
Info/CiscoStack.pm
 | 
					lib/SNMP/Info/CiscoAgg.pm
 | 
				
			||||||
Info/CiscoStats.pm
 | 
					lib/SNMP/Info/CiscoConfig.pm
 | 
				
			||||||
Info/CiscoStpExtensions.pm
 | 
					lib/SNMP/Info/CiscoPortSecurity.pm
 | 
				
			||||||
Info/CiscoVTP.pm
 | 
					lib/SNMP/Info/CiscoPower.pm
 | 
				
			||||||
Info/EDP.pm
 | 
					lib/SNMP/Info/CiscoQOS.pm
 | 
				
			||||||
Info/Entity.pm
 | 
					lib/SNMP/Info/CiscoRTT.pm
 | 
				
			||||||
Info/EtherLike.pm
 | 
					lib/SNMP/Info/CiscoStack.pm
 | 
				
			||||||
Info/FDP.pm
 | 
					lib/SNMP/Info/CiscoStats.pm
 | 
				
			||||||
Info/IEEE802dot11.pm
 | 
					lib/SNMP/Info/CiscoStpExtensions.pm
 | 
				
			||||||
Info/IEEE802dot3ad.pm
 | 
					lib/SNMP/Info/CiscoVTP.pm
 | 
				
			||||||
Info/IPv6.pm
 | 
					lib/SNMP/Info/EDP.pm
 | 
				
			||||||
Info/Layer1.pm
 | 
					lib/SNMP/Info/Entity.pm
 | 
				
			||||||
Info/Layer1/Allied.pm
 | 
					lib/SNMP/Info/EtherLike.pm
 | 
				
			||||||
Info/Layer1/Asante.pm
 | 
					lib/SNMP/Info/FDP.pm
 | 
				
			||||||
Info/Layer1/Bayhub.pm
 | 
					lib/SNMP/Info/IEEE802dot11.pm
 | 
				
			||||||
Info/Layer1/Cyclades.pm
 | 
					lib/SNMP/Info/IEEE802dot3ad.pm
 | 
				
			||||||
Info/Layer1/S3000.pm
 | 
					lib/SNMP/Info/IPv6.pm
 | 
				
			||||||
Info/Layer2.pm
 | 
					lib/SNMP/Info/Layer1.pm
 | 
				
			||||||
Info/Layer2/3Com.pm
 | 
					lib/SNMP/Info/Layer1/Allied.pm
 | 
				
			||||||
Info/Layer2/Airespace.pm
 | 
					lib/SNMP/Info/Layer1/Asante.pm
 | 
				
			||||||
Info/Layer2/Aironet.pm
 | 
					lib/SNMP/Info/Layer1/Bayhub.pm
 | 
				
			||||||
Info/Layer2/Allied.pm
 | 
					lib/SNMP/Info/Layer1/Cyclades.pm
 | 
				
			||||||
Info/Layer2/Baystack.pm
 | 
					lib/SNMP/Info/Layer1/S3000.pm
 | 
				
			||||||
Info/Layer2/C1900.pm
 | 
					lib/SNMP/Info/Layer2.pm
 | 
				
			||||||
Info/Layer2/C2900.pm
 | 
					lib/SNMP/Info/Layer2/3Com.pm
 | 
				
			||||||
Info/Layer2/Catalyst.pm
 | 
					lib/SNMP/Info/Layer2/Adtran.pm
 | 
				
			||||||
Info/Layer2/Centillion.pm
 | 
					lib/SNMP/Info/Layer2/Airespace.pm
 | 
				
			||||||
Info/Layer2/Cisco.pm
 | 
					lib/SNMP/Info/Layer2/Aironet.pm
 | 
				
			||||||
Info/Layer2/CiscoSB.pm
 | 
					lib/SNMP/Info/Layer2/Allied.pm
 | 
				
			||||||
Info/Layer2/HP.pm
 | 
					lib/SNMP/Info/Layer2/Baystack.pm
 | 
				
			||||||
Info/Layer2/HP4000.pm
 | 
					lib/SNMP/Info/Layer2/C1900.pm
 | 
				
			||||||
Info/Layer2/HPVC.pm
 | 
					lib/SNMP/Info/Layer2/C2900.pm
 | 
				
			||||||
Info/Layer2/Kentrox.pm
 | 
					lib/SNMP/Info/Layer2/Catalyst.pm
 | 
				
			||||||
Info/Layer2/N2270.pm
 | 
					lib/SNMP/Info/Layer2/Centillion.pm
 | 
				
			||||||
Info/Layer2/NAP222x.pm
 | 
					lib/SNMP/Info/Layer2/Cisco.pm
 | 
				
			||||||
Info/Layer2/Netgear.pm
 | 
					lib/SNMP/Info/Layer2/CiscoSB.pm
 | 
				
			||||||
Info/Layer2/NWSS2300.pm
 | 
					lib/SNMP/Info/Layer2/HP.pm
 | 
				
			||||||
Info/Layer2/Orinoco.pm
 | 
					lib/SNMP/Info/Layer2/HP4000.pm
 | 
				
			||||||
Info/Layer2/Trapeze.pm
 | 
					lib/SNMP/Info/Layer2/HPVC.pm
 | 
				
			||||||
Info/Layer2/Ubiquiti.pm
 | 
					lib/SNMP/Info/Layer2/Kentrox.pm
 | 
				
			||||||
Info/Layer2/ZyXEL_DSLAM.pm
 | 
					lib/SNMP/Info/Layer2/N2270.pm
 | 
				
			||||||
Info/Layer3.pm
 | 
					lib/SNMP/Info/Layer2/NAP222x.pm
 | 
				
			||||||
Info/Layer3/Aironet.pm
 | 
					lib/SNMP/Info/Layer2/Netgear.pm
 | 
				
			||||||
Info/Layer3/AlcatelLucent.pm
 | 
					lib/SNMP/Info/Layer2/NWSS2300.pm
 | 
				
			||||||
Info/Layer3/AlteonAD.pm
 | 
					lib/SNMP/Info/Layer2/Orinoco.pm
 | 
				
			||||||
Info/Layer3/Altiga.pm
 | 
					lib/SNMP/Info/Layer2/Trapeze.pm
 | 
				
			||||||
Info/Layer3/Arista.pm
 | 
					lib/SNMP/Info/Layer2/Ubiquiti.pm
 | 
				
			||||||
Info/Layer3/Aruba.pm
 | 
					lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
 | 
				
			||||||
Info/Layer3/BayRS.pm
 | 
					lib/SNMP/Info/Layer3.pm
 | 
				
			||||||
Info/Layer3/BlueCoatSG.pm
 | 
					lib/SNMP/Info/Layer3/Aironet.pm
 | 
				
			||||||
Info/Layer3/C3550.pm
 | 
					lib/SNMP/Info/Layer3/AlcatelLucent.pm
 | 
				
			||||||
Info/Layer3/C4000.pm
 | 
					lib/SNMP/Info/Layer3/AlteonAD.pm
 | 
				
			||||||
Info/Layer3/C6500.pm
 | 
					lib/SNMP/Info/Layer3/Altiga.pm
 | 
				
			||||||
Info/Layer3/Cisco.pm
 | 
					lib/SNMP/Info/Layer3/Arista.pm
 | 
				
			||||||
Info/Layer3/CiscoASA.pm
 | 
					lib/SNMP/Info/Layer3/Aruba.pm
 | 
				
			||||||
Info/Layer3/CiscoFWSM.pm
 | 
					lib/SNMP/Info/Layer3/BayRS.pm
 | 
				
			||||||
Info/Layer3/CiscoSwitch.pm
 | 
					lib/SNMP/Info/Layer3/BlueCoatSG.pm
 | 
				
			||||||
Info/Layer3/Contivity.pm
 | 
					lib/SNMP/Info/Layer3/C3550.pm
 | 
				
			||||||
Info/Layer3/Dell.pm
 | 
					lib/SNMP/Info/Layer3/C4000.pm
 | 
				
			||||||
Info/Layer3/Enterasys.pm
 | 
					lib/SNMP/Info/Layer3/C6500.pm
 | 
				
			||||||
Info/Layer3/Extreme.pm
 | 
					lib/SNMP/Info/Layer3/CheckPoint.pm
 | 
				
			||||||
Info/Layer3/F5.pm
 | 
					lib/SNMP/Info/Layer3/Cisco.pm
 | 
				
			||||||
Info/Layer3/Force10.pm
 | 
					lib/SNMP/Info/Layer3/CiscoASA.pm
 | 
				
			||||||
Info/Layer3/Foundry.pm
 | 
					lib/SNMP/Info/Layer3/CiscoFWSM.pm
 | 
				
			||||||
Info/Layer3/H3C.pm
 | 
					lib/SNMP/Info/Layer3/CiscoSwitch.pm
 | 
				
			||||||
Info/Layer3/HP9300.pm
 | 
					lib/SNMP/Info/Layer3/Contivity.pm
 | 
				
			||||||
Info/Layer3/IBMGbTor.pm
 | 
					lib/SNMP/Info/Layer3/Dell.pm
 | 
				
			||||||
Info/Layer3/Juniper.pm
 | 
					lib/SNMP/Info/Layer3/DLink.pm
 | 
				
			||||||
Info/Layer3/Lantronix.pm
 | 
					lib/SNMP/Info/Layer3/Enterasys.pm
 | 
				
			||||||
Info/Layer3/Microsoft.pm
 | 
					lib/SNMP/Info/Layer3/Extreme.pm
 | 
				
			||||||
Info/Layer3/Mikrotik.pm
 | 
					lib/SNMP/Info/Layer3/F5.pm
 | 
				
			||||||
Info/Layer3/N1600.pm
 | 
					lib/SNMP/Info/Layer3/Force10.pm
 | 
				
			||||||
Info/Layer3/Netscreen.pm
 | 
					lib/SNMP/Info/Layer3/Fortinet.pm
 | 
				
			||||||
Info/Layer3/NetSNMP.pm
 | 
					lib/SNMP/Info/Layer3/Foundry.pm
 | 
				
			||||||
Info/Layer3/Nexus.pm
 | 
					lib/SNMP/Info/Layer3/H3C.pm
 | 
				
			||||||
Info/Layer3/PacketFront.pm
 | 
					lib/SNMP/Info/Layer3/HP9300.pm
 | 
				
			||||||
Info/Layer3/Passport.pm
 | 
					lib/SNMP/Info/Layer3/Huawei.pm
 | 
				
			||||||
Info/Layer3/Pf.pm
 | 
					lib/SNMP/Info/Layer3/IBMGbTor.pm
 | 
				
			||||||
Info/Layer3/Pica8.pm
 | 
					lib/SNMP/Info/Layer3/Juniper.pm
 | 
				
			||||||
Info/Layer3/SonicWALL.pm
 | 
					lib/SNMP/Info/Layer3/Lantronix.pm
 | 
				
			||||||
Info/Layer3/Steelhead.pm
 | 
					lib/SNMP/Info/Layer3/Microsoft.pm
 | 
				
			||||||
Info/Layer3/Sun.pm
 | 
					lib/SNMP/Info/Layer3/Mikrotik.pm
 | 
				
			||||||
Info/Layer3/Tasman.pm
 | 
					lib/SNMP/Info/Layer3/N1600.pm
 | 
				
			||||||
Info/Layer3/Timetra.pm
 | 
					lib/SNMP/Info/Layer3/Netscreen.pm
 | 
				
			||||||
Info/Layer7.pm
 | 
					lib/SNMP/Info/Layer3/NetSNMP.pm
 | 
				
			||||||
Info/Layer7/APC.pm
 | 
					lib/SNMP/Info/Layer3/Nexus.pm
 | 
				
			||||||
Info/Layer7/Neoteris.pm
 | 
					lib/SNMP/Info/Layer3/PacketFront.pm
 | 
				
			||||||
Info/Layer7/Netscaler.pm
 | 
					lib/SNMP/Info/Layer3/PaloAlto.pm
 | 
				
			||||||
Info/LLDP.pm
 | 
					lib/SNMP/Info/Layer3/Passport.pm
 | 
				
			||||||
Info/MAU.pm
 | 
					lib/SNMP/Info/Layer3/Pf.pm
 | 
				
			||||||
Info/MRO.pm
 | 
					lib/SNMP/Info/Layer3/Pica8.pm
 | 
				
			||||||
Info/NortelStack.pm
 | 
					lib/SNMP/Info/Layer3/SonicWALL.pm
 | 
				
			||||||
Info/PowerEthernet.pm
 | 
					lib/SNMP/Info/Layer3/Steelhead.pm
 | 
				
			||||||
Info/RapidCity.pm
 | 
					lib/SNMP/Info/Layer3/Sun.pm
 | 
				
			||||||
Info/SONMP.pm
 | 
					lib/SNMP/Info/Layer3/Tasman.pm
 | 
				
			||||||
Makefile.PL
 | 
					lib/SNMP/Info/Layer3/Timetra.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer3/VMware.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer3/VyOS.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer7.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer7/APC.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer7/CiscoIPS.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer7/Neoteris.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/Layer7/Netscaler.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/LLDP.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/MAU.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/MRO.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/NortelStack.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/PowerEthernet.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/RapidCity.pm
 | 
				
			||||||
 | 
					lib/SNMP/Info/SONMP.pm
 | 
				
			||||||
 | 
					LICENSE
 | 
				
			||||||
MANIFEST			This list of files
 | 
					MANIFEST			This list of files
 | 
				
			||||||
 | 
					META.json
 | 
				
			||||||
 | 
					META.yml
 | 
				
			||||||
README
 | 
					README
 | 
				
			||||||
t/00-load.t
 | 
					t/00_load.t
 | 
				
			||||||
t/docmunge
 | 
					xt/.perltidyrc
 | 
				
			||||||
t/make_dev_matrix.pl
 | 
					xt/00_local_distribution.t
 | 
				
			||||||
t/prereq.t
 | 
					xt/00_local_docininfo.t
 | 
				
			||||||
t/push_ver
 | 
					xt/00_local_perlcritic.t
 | 
				
			||||||
t/run_test
 | 
					xt/00_local_pod-coverage.t
 | 
				
			||||||
t/test_class.pl
 | 
					xt/00_local_pod.t
 | 
				
			||||||
t/util/make_snmpdata.pl
 | 
					xt/00_local_prereq.t
 | 
				
			||||||
t/util/test_class_mocked.pl
 | 
					xt/00_local_spelling.t
 | 
				
			||||||
 | 
					xt/00_local_versionsync.t
 | 
				
			||||||
 | 
					xt/10_remote_snmplabs.t
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,28 +1,67 @@
 | 
				
			|||||||
# Version control files and dirs.
 | 
					\.bak$
 | 
				
			||||||
 | 
					\.pid$
 | 
				
			||||||
 | 
					\.swp$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					^SNMP-Info-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					^MANIFEST\.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Avoid version control files.
 | 
				
			||||||
\bRCS\b
 | 
					\bRCS\b
 | 
				
			||||||
\bCVS\b
 | 
					\bCVS\b
 | 
				
			||||||
 | 
					\bSCCS\b
 | 
				
			||||||
,v$
 | 
					,v$
 | 
				
			||||||
\B\.svn\b
 | 
					\B\.svn\b
 | 
				
			||||||
\B\.git\b
 | 
					\B\.git\b
 | 
				
			||||||
.gitignore
 | 
					\B\.gitignore\b
 | 
				
			||||||
 | 
					\b_darcs\b
 | 
				
			||||||
 | 
					\B\.cvsignore$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Makemaker generated files and dirs.
 | 
					# Avoid VMS specific MakeMaker generated files
 | 
				
			||||||
^MANIFEST\.
 | 
					\bDescrip.MMS$
 | 
				
			||||||
^Makefile$
 | 
					\bDESCRIP.MMS$
 | 
				
			||||||
^blib/
 | 
					\bdescrip.mms$
 | 
				
			||||||
^MakeMaker-\d
 | 
					 | 
				
			||||||
pm_to_blib
 | 
					 | 
				
			||||||
MYMETA.*
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Temp, old and emacs backup files.
 | 
					# Avoid Makemaker generated and utility files.
 | 
				
			||||||
 | 
					\bMANIFEST\.bak
 | 
				
			||||||
 | 
					\bMakefile$
 | 
				
			||||||
 | 
					\bblib/
 | 
				
			||||||
 | 
					\bMakeMaker-\d
 | 
				
			||||||
 | 
					\bpm_to_blib\.ts$
 | 
				
			||||||
 | 
					\bpm_to_blib$
 | 
				
			||||||
 | 
					\bblibdirs\.ts$         # 6.18 through 6.25 generated this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Avoid Module::Build generated and utility files.
 | 
				
			||||||
 | 
					\bBuild$
 | 
				
			||||||
 | 
					\b_build/
 | 
				
			||||||
 | 
					\bBuild.bat$
 | 
				
			||||||
 | 
					\bBuild.COM$
 | 
				
			||||||
 | 
					\bBUILD.COM$
 | 
				
			||||||
 | 
					\bbuild.com$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Avoid temp and backup files.
 | 
				
			||||||
~$
 | 
					~$
 | 
				
			||||||
\.old$
 | 
					\.old$
 | 
				
			||||||
^#.*#$
 | 
					\#$
 | 
				
			||||||
^\.#
 | 
					\b\.#
 | 
				
			||||||
 | 
					\.bak$
 | 
				
			||||||
 | 
					\.tmp$
 | 
				
			||||||
 | 
					\.#
 | 
				
			||||||
 | 
					\.rej$
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Private Regression Tests
 | 
					# Avoid OS-specific files/dirs
 | 
				
			||||||
\d+_local_
 | 
					# Mac OSX metadata
 | 
				
			||||||
\.?perl\w+\.?rc$
 | 
					\B\.DS_Store
 | 
				
			||||||
 | 
					# Mac OSX SMB mount metadata files
 | 
				
			||||||
 | 
					\B\._
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Komodo project file
 | 
					# Avoid Devel::Cover and Devel::CoverX::Covered files.
 | 
				
			||||||
\.kpf$
 | 
					\bcover_db\b
 | 
				
			||||||
 | 
					\bcovered\b
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					# Avoid MYMETA files
 | 
				
			||||||
 | 
					^MYMETA\.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.github
 | 
				
			||||||
 | 
					.travis
 | 
				
			||||||
 | 
					README.md
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										529
									
								
								META.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										529
									
								
								META.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,529 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					   "abstract" : "OO Interface to Network devices and MIBs through SNMP",
 | 
				
			||||||
 | 
					   "author" : [
 | 
				
			||||||
 | 
					      "Eric A. Miller <emiller@cpan.org>"
 | 
				
			||||||
 | 
					   ],
 | 
				
			||||||
 | 
					   "dynamic_config" : 1,
 | 
				
			||||||
 | 
					   "generated_by" : "Module::Build version 0.4224",
 | 
				
			||||||
 | 
					   "license" : [
 | 
				
			||||||
 | 
					      "bsd"
 | 
				
			||||||
 | 
					   ],
 | 
				
			||||||
 | 
					   "meta-spec" : {
 | 
				
			||||||
 | 
					      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
 | 
				
			||||||
 | 
					      "version" : 2
 | 
				
			||||||
 | 
					   },
 | 
				
			||||||
 | 
					   "name" : "SNMP-Info",
 | 
				
			||||||
 | 
					   "prereqs" : {
 | 
				
			||||||
 | 
					      "configure" : {
 | 
				
			||||||
 | 
					         "requires" : {
 | 
				
			||||||
 | 
					            "Module::Build" : "0.42"
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "runtime" : {
 | 
				
			||||||
 | 
					         "recommends" : {
 | 
				
			||||||
 | 
					            "Class::ISA" : "0",
 | 
				
			||||||
 | 
					            "File::Slurp" : "0",
 | 
				
			||||||
 | 
					            "Module::Info" : "0",
 | 
				
			||||||
 | 
					            "Module::Load" : "0",
 | 
				
			||||||
 | 
					            "PPI" : "0"
 | 
				
			||||||
 | 
					         },
 | 
				
			||||||
 | 
					         "requires" : {
 | 
				
			||||||
 | 
					            "Math::BigInt" : "0",
 | 
				
			||||||
 | 
					            "SNMP" : "0"
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "test" : {
 | 
				
			||||||
 | 
					         "requires" : {
 | 
				
			||||||
 | 
					            "Test::Distribution" : "0",
 | 
				
			||||||
 | 
					            "Test::More" : "0.88"
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   },
 | 
				
			||||||
 | 
					   "provides" : {
 | 
				
			||||||
 | 
					      "SNMP::Info" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::AMAP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/AMAP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::AdslLine" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/AdslLine.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Aggregate" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Aggregate.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Airespace" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Airespace.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Bridge" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Bridge.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CDP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CDP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoAgg" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoAgg.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoConfig" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoConfig.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoPortSecurity" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoPortSecurity.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoPower" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoPower.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoQOS" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoQOS.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoRTT" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoRTT.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoStack" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoStack.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoStats" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoStats.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoStpExtensions" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoStpExtensions.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::CiscoVTP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/CiscoVTP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::EDP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/EDP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Entity" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Entity.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::EtherLike" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/EtherLike.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::FDP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/FDP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::IEEE802dot11" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/IEEE802dot11.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::IEEE802dot3ad" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/IEEE802dot3ad.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::IPv6" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/IPv6.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::LLDP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/LLDP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer1" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer1.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer1::Allied" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer1/Allied.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer1::Asante" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer1/Asante.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer1::Bayhub" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer1/Bayhub.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer1::Cyclades" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer1/Cyclades.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer1::S3000" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer1/S3000.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::3Com" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/3Com.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Adtran" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Adtran.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Airespace" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Airespace.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Aironet" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Aironet.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Allied" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Allied.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Baystack" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Baystack.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::C1900" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/C1900.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::C2900" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/C2900.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Catalyst" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Catalyst.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Centillion" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Centillion.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Cisco" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Cisco.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::CiscoSB" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/CiscoSB.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::HP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/HP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::HP4000" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/HP4000.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::HPVC" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/HPVC.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Kentrox" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Kentrox.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::N2270" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/N2270.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::NAP222x" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/NAP222x.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::NWSS2300" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/NWSS2300.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Netgear" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Netgear.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Orinoco" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Orinoco.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Trapeze" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Trapeze.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::Ubiquiti" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/Ubiquiti.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer2::ZyXEL_DSLAM" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Aironet" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Aironet.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::AlcatelLucent" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/AlcatelLucent.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::AlteonAD" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/AlteonAD.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Altiga" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Altiga.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Arista" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Arista.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Aruba" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Aruba.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::BayRS" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/BayRS.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::BlueCoatSG" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/BlueCoatSG.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::C3550" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/C3550.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::C4000" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/C4000.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::C6500" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/C6500.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::CheckPoint" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/CheckPoint.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Cisco" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Cisco.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::CiscoASA" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/CiscoASA.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::CiscoFWSM" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/CiscoFWSM.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::CiscoSwitch" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/CiscoSwitch.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Contivity" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Contivity.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::DLink" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/DLink.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Dell" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Dell.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Enterasys" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Enterasys.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Extreme" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Extreme.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::F5" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/F5.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Force10" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Force10.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Fortinet" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Fortinet.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Foundry" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Foundry.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::H3C" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/H3C.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::HP9300" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/HP9300.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Huawei" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Huawei.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::IBMGbTor" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/IBMGbTor.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Juniper" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Juniper.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Lantronix" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Lantronix.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Microsoft" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Microsoft.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Mikrotik" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Mikrotik.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::N1600" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/N1600.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::NetSNMP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/NetSNMP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Netscreen" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Netscreen.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Nexus" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Nexus.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::PacketFront" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/PacketFront.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::PaloAlto" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/PaloAlto.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Passport" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Passport.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Pf" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Pf.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Pica8" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Pica8.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::SonicWALL" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/SonicWALL.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Steelhead" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Steelhead.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Sun" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Sun.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Tasman" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Tasman.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::Timetra" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/Timetra.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::VMware" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/VMware.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer3::VyOS" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer3/VyOS.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer7" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer7.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer7::APC" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer7/APC.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer7::CiscoIPS" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer7/CiscoIPS.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer7::Neoteris" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer7/Neoteris.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::Layer7::Netscaler" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/Layer7/Netscaler.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::MAU" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/MAU.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::MRO" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/MRO.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::NortelStack" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/NortelStack.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::PowerEthernet" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/PowerEthernet.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::RapidCity" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/RapidCity.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "SNMP::Info::SONMP" : {
 | 
				
			||||||
 | 
					         "file" : "lib/SNMP/Info/SONMP.pm",
 | 
				
			||||||
 | 
					         "version" : "3.44"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   },
 | 
				
			||||||
 | 
					   "release_status" : "stable",
 | 
				
			||||||
 | 
					   "resources" : {
 | 
				
			||||||
 | 
					      "bugtracker" : {
 | 
				
			||||||
 | 
					         "web" : "https://github.com/netdisco/snmp-info/issues"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "homepage" : "http://netdisco.org/",
 | 
				
			||||||
 | 
					      "license" : [
 | 
				
			||||||
 | 
					         "http://opensource.org/licenses/bsd-license.php"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "repository" : {
 | 
				
			||||||
 | 
					         "url" : "https://github.com/netdisco/snmp-info"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "x_IRC" : "irc://irc.freenode.org/#netdisco",
 | 
				
			||||||
 | 
					      "x_MailingList" : "https://lists.sourceforge.net/lists/listinfo/snmp-info-users"
 | 
				
			||||||
 | 
					   },
 | 
				
			||||||
 | 
					   "version" : "3.44",
 | 
				
			||||||
 | 
					   "x_serialization_backend" : "JSON::PP version 2.97001"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										386
									
								
								META.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								META.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,386 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					abstract: 'OO Interface to Network devices and MIBs through SNMP'
 | 
				
			||||||
 | 
					author:
 | 
				
			||||||
 | 
					  - 'Eric A. Miller <emiller@cpan.org>'
 | 
				
			||||||
 | 
					build_requires:
 | 
				
			||||||
 | 
					  Test::Distribution: '0'
 | 
				
			||||||
 | 
					  Test::More: '0.88'
 | 
				
			||||||
 | 
					configure_requires:
 | 
				
			||||||
 | 
					  Module::Build: '0.42'
 | 
				
			||||||
 | 
					dynamic_config: 1
 | 
				
			||||||
 | 
					generated_by: 'Module::Build version 0.4224, CPAN::Meta::Converter version 2.150010'
 | 
				
			||||||
 | 
					license: bsd
 | 
				
			||||||
 | 
					meta-spec:
 | 
				
			||||||
 | 
					  url: http://module-build.sourceforge.net/META-spec-v1.4.html
 | 
				
			||||||
 | 
					  version: '1.4'
 | 
				
			||||||
 | 
					name: SNMP-Info
 | 
				
			||||||
 | 
					provides:
 | 
				
			||||||
 | 
					  SNMP::Info:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::AMAP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/AMAP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::AdslLine:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/AdslLine.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Aggregate:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Aggregate.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Airespace:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Airespace.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Bridge:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Bridge.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CDP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CDP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoAgg:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoAgg.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoConfig:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoConfig.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoPortSecurity:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoPortSecurity.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoPower:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoPower.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoQOS:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoQOS.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoRTT:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoRTT.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoStack:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoStack.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoStats:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoStats.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoStpExtensions:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoStpExtensions.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::CiscoVTP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/CiscoVTP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::EDP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/EDP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Entity:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Entity.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::EtherLike:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/EtherLike.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::FDP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/FDP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::IEEE802dot11:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/IEEE802dot11.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::IEEE802dot3ad:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/IEEE802dot3ad.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::IPv6:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/IPv6.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::LLDP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/LLDP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer1:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer1.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer1::Allied:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer1/Allied.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer1::Asante:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer1/Asante.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer1::Bayhub:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer1/Bayhub.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer1::Cyclades:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer1/Cyclades.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer1::S3000:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer1/S3000.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::3Com:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/3Com.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Adtran:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Adtran.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Airespace:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Airespace.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Aironet:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Aironet.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Allied:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Allied.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Baystack:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Baystack.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::C1900:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/C1900.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::C2900:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/C2900.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Catalyst:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Catalyst.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Centillion:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Centillion.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Cisco:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Cisco.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::CiscoSB:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/CiscoSB.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::HP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/HP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::HP4000:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/HP4000.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::HPVC:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/HPVC.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Kentrox:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Kentrox.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::N2270:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/N2270.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::NAP222x:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/NAP222x.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::NWSS2300:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/NWSS2300.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Netgear:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Netgear.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Orinoco:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Orinoco.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Trapeze:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Trapeze.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::Ubiquiti:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/Ubiquiti.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer2::ZyXEL_DSLAM:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer2/ZyXEL_DSLAM.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Aironet:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Aironet.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::AlcatelLucent:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/AlcatelLucent.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::AlteonAD:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/AlteonAD.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Altiga:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Altiga.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Arista:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Arista.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Aruba:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Aruba.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::BayRS:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/BayRS.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::BlueCoatSG:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/BlueCoatSG.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::C3550:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/C3550.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::C4000:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/C4000.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::C6500:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/C6500.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::CheckPoint:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/CheckPoint.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Cisco:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Cisco.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::CiscoASA:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/CiscoASA.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::CiscoFWSM:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/CiscoFWSM.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::CiscoSwitch:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/CiscoSwitch.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Contivity:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Contivity.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::DLink:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/DLink.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Dell:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Dell.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Enterasys:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Enterasys.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Extreme:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Extreme.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::F5:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/F5.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Force10:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Force10.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Fortinet:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Fortinet.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Foundry:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Foundry.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::H3C:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/H3C.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::HP9300:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/HP9300.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Huawei:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Huawei.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::IBMGbTor:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/IBMGbTor.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Juniper:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Juniper.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Lantronix:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Lantronix.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Microsoft:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Microsoft.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Mikrotik:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Mikrotik.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::N1600:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/N1600.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::NetSNMP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/NetSNMP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Netscreen:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Netscreen.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Nexus:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Nexus.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::PacketFront:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/PacketFront.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::PaloAlto:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/PaloAlto.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Passport:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Passport.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Pf:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Pf.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Pica8:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Pica8.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::SonicWALL:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/SonicWALL.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Steelhead:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Steelhead.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Sun:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Sun.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Tasman:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Tasman.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::Timetra:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/Timetra.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::VMware:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/VMware.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer3::VyOS:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer3/VyOS.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer7:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer7.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer7::APC:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer7/APC.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer7::CiscoIPS:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer7/CiscoIPS.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer7::Neoteris:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer7/Neoteris.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::Layer7::Netscaler:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/Layer7/Netscaler.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::MAU:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/MAU.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::MRO:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/MRO.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::NortelStack:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/NortelStack.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::PowerEthernet:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/PowerEthernet.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::RapidCity:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/RapidCity.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					  SNMP::Info::SONMP:
 | 
				
			||||||
 | 
					    file: lib/SNMP/Info/SONMP.pm
 | 
				
			||||||
 | 
					    version: '3.44'
 | 
				
			||||||
 | 
					recommends:
 | 
				
			||||||
 | 
					  Class::ISA: '0'
 | 
				
			||||||
 | 
					  File::Slurp: '0'
 | 
				
			||||||
 | 
					  Module::Info: '0'
 | 
				
			||||||
 | 
					  Module::Load: '0'
 | 
				
			||||||
 | 
					  PPI: '0'
 | 
				
			||||||
 | 
					requires:
 | 
				
			||||||
 | 
					  Math::BigInt: '0'
 | 
				
			||||||
 | 
					  SNMP: '0'
 | 
				
			||||||
 | 
					resources:
 | 
				
			||||||
 | 
					  IRC: irc://irc.freenode.org/#netdisco
 | 
				
			||||||
 | 
					  MailingList: https://lists.sourceforge.net/lists/listinfo/snmp-info-users
 | 
				
			||||||
 | 
					  bugtracker: https://github.com/netdisco/snmp-info/issues
 | 
				
			||||||
 | 
					  homepage: http://netdisco.org/
 | 
				
			||||||
 | 
					  license: http://opensource.org/licenses/bsd-license.php
 | 
				
			||||||
 | 
					  repository: https://github.com/netdisco/snmp-info
 | 
				
			||||||
 | 
					version: '3.44'
 | 
				
			||||||
 | 
					x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
 | 
				
			||||||
							
								
								
									
										39
									
								
								Makefile.PL
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								Makefile.PL
									
									
									
									
									
								
							@@ -1,39 +0,0 @@
 | 
				
			|||||||
# Module makefile for SNMP::Info (using ExtUtils::MakeMaker)
 | 
					 | 
				
			||||||
# $Id$
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
require 5.006;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use strict;
 | 
					 | 
				
			||||||
use warnings;
 | 
					 | 
				
			||||||
use ExtUtils::MakeMaker;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
WriteMakefile(
 | 
					 | 
				
			||||||
    NAME          => 'SNMP::Info',
 | 
					 | 
				
			||||||
    AUTHOR        => 'Eric A. Miller <emiller@cpan.org>',
 | 
					 | 
				
			||||||
    VERSION_FROM  => 'Info.pm',
 | 
					 | 
				
			||||||
    ABSTRACT_FROM => 'Info.pm',
 | 
					 | 
				
			||||||
    PREREQ_PM     => {
 | 
					 | 
				
			||||||
        'Test::More'   => 0,
 | 
					 | 
				
			||||||
        'Math::BigInt' => 0,
 | 
					 | 
				
			||||||
        'SNMP'         => 0,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    PMLIBDIRS => [ 'Info', '$(BASEEXT)' ],
 | 
					 | 
				
			||||||
    dist      => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
 | 
					 | 
				
			||||||
    clean     => { FILES    => 'SNMP-Info-*' },
 | 
					 | 
				
			||||||
    realclean => { FILES    => 'Makefile.old' },
 | 
					 | 
				
			||||||
    (     ( ExtUtils::MakeMaker->VERSION() lt '6.25' ) ? ( 'PL_FILES' => {} )
 | 
					 | 
				
			||||||
        : ()
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    (   ( ExtUtils::MakeMaker->VERSION() gt '6.30' ) ? ( 'LICENSE' => 'bsd' )
 | 
					 | 
				
			||||||
        : ()
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub MY::postamble {
 | 
					 | 
				
			||||||
    "
 | 
					 | 
				
			||||||
.PHONY: readme
 | 
					 | 
				
			||||||
readme: README
 | 
					 | 
				
			||||||
README: Info.pm
 | 
					 | 
				
			||||||
	pod2text -l Info.pm > README";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										325
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										325
									
								
								README
									
									
									
									
									
								
							@@ -1,29 +1,26 @@
 | 
				
			|||||||
NAME
 | 
					NAME
 | 
				
			||||||
 | 
					 | 
				
			||||||
    SNMP::Info - OO Interface to Network devices and MIBs through SNMP
 | 
					    SNMP::Info - OO Interface to Network devices and MIBs through SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VERSION
 | 
					VERSION
 | 
				
			||||||
 | 
					    SNMP::Info - Version 3.44
 | 
				
			||||||
    SNMP::Info - Version 3.20
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
AUTHOR
 | 
					AUTHOR
 | 
				
			||||||
 | 
					 | 
				
			||||||
    SNMP::Info is maintained by team of Open Source authors headed by Eric
 | 
					    SNMP::Info is maintained by team of Open Source authors headed by Eric
 | 
				
			||||||
    Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
 | 
					    Miller, Bill Fenner, Max Baker, Jeroen van Ingen and Oliver Gorwits.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Please visit <http://sourceforge.net/projects/snmp-info/> for most
 | 
					    Please visit http://sourceforge.net/projects/snmp-info/ for most
 | 
				
			||||||
    up-to-date list of developers.
 | 
					    up-to-date list of developers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info was originally created at UCSC for the Netdisco project
 | 
					    SNMP::Info was originally created at UCSC for the Netdisco project
 | 
				
			||||||
    <http://netdisco.org> by Max Baker.
 | 
					    http://netdisco.org by Max Baker.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEVICES SUPPORTED
 | 
					DEVICES SUPPORTED
 | 
				
			||||||
 | 
					    There are now generic classes for most types of device and so the
 | 
				
			||||||
    See <http://netdisco.org/doc/DeviceMatrix.html> or DeviceMatrix.txt for
 | 
					    authors recommend loading SNMP::Info with AutoSpecify, and then
 | 
				
			||||||
    more details.
 | 
					    reporting to the mail list any missing functionality (such as neighbor
 | 
				
			||||||
 | 
					    discovery tables).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SYNOPSIS
 | 
					SYNOPSIS
 | 
				
			||||||
 | 
					 | 
				
			||||||
     use SNMP::Info;
 | 
					     use SNMP::Info;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     my $info = new SNMP::Info( 
 | 
					     my $info = new SNMP::Info( 
 | 
				
			||||||
@@ -79,13 +76,11 @@ SYNOPSIS
 | 
				
			|||||||
     }
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SUPPORT
 | 
					SUPPORT
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Please direct all support, help, and bug requests to the snmp-info-users
 | 
					    Please direct all support, help, and bug requests to the snmp-info-users
 | 
				
			||||||
    Mailing List at
 | 
					    Mailing List at
 | 
				
			||||||
    <http://lists.sourceforge.net/lists/listinfo/snmp-info-users>.
 | 
					    http://lists.sourceforge.net/lists/listinfo/snmp-info-users.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DESCRIPTION
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					 | 
				
			||||||
    SNMP::Info gives an object oriented interface to information obtained
 | 
					    SNMP::Info gives an object oriented interface to information obtained
 | 
				
			||||||
    through SNMP.
 | 
					    through SNMP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -112,7 +107,6 @@ DESCRIPTION
 | 
				
			|||||||
    a couple hashes. See EXTENDING SNMP::INFO.
 | 
					    a couple hashes. See EXTENDING SNMP::INFO.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REQUIREMENTS
 | 
					REQUIREMENTS
 | 
				
			||||||
 | 
					 | 
				
			||||||
    1. Net-SNMP
 | 
					    1. Net-SNMP
 | 
				
			||||||
        To use this module, you must have Net-SNMP installed on your system.
 | 
					        To use this module, you must have Net-SNMP installed on your system.
 | 
				
			||||||
        More specifically you need the Perl modules that come with it.
 | 
					        More specifically you need the Perl modules that come with it.
 | 
				
			||||||
@@ -122,9 +116,9 @@ REQUIREMENTS
 | 
				
			|||||||
        The SNMP module is matched to an install of net-snmp, and must be
 | 
					        The SNMP module is matched to an install of net-snmp, and must be
 | 
				
			||||||
        installed from the net-snmp source tree.
 | 
					        installed from the net-snmp source tree.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        The Perl module "SNMP" is found inside the net-snmp distribution. Go
 | 
					        The Perl module `SNMP' is found inside the net-snmp distribution. Go
 | 
				
			||||||
        to the perl/ directory of the distribution to install it, or run
 | 
					        to the perl/ directory of the distribution to install it, or run
 | 
				
			||||||
        "./configure --with-perl-modules" from the top directory of the
 | 
					        `./configure --with-perl-modules' from the top directory of the
 | 
				
			||||||
        net-snmp distribution.
 | 
					        net-snmp distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Net-SNMP can be found at http://net-snmp.sourceforge.net
 | 
					        Net-SNMP can be found at http://net-snmp.sourceforge.net
 | 
				
			||||||
@@ -143,28 +137,24 @@ REQUIREMENTS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        If you are using SNMP::Info separate from Netdisco, download the
 | 
					        If you are using SNMP::Info separate from Netdisco, download the
 | 
				
			||||||
        Netdisco MIB package at
 | 
					        Netdisco MIB package at
 | 
				
			||||||
        <http://sourceforge.net/project/showfiles.php?group_id=80033&package
 | 
					        http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-
 | 
				
			||||||
        _id=135517>
 | 
					        snapshot/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Make sure that your snmp.conf is updated to point to your MIB
 | 
					        Make sure that your snmp.conf is updated to point to your MIB
 | 
				
			||||||
        directory and that the MIBs are world-readable.
 | 
					        directory and that the MIBs are world-readable.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DESIGN GOALS
 | 
					DESIGN GOALS
 | 
				
			||||||
 | 
					 | 
				
			||||||
    1. Use of textual MIB leaf identifier and enumerated values
 | 
					    1. Use of textual MIB leaf identifier and enumerated values
 | 
				
			||||||
 | 
					        * All values are retrieved via MIB Leaf node names
 | 
				
			||||||
        *   All values are retrieved via MIB Leaf node names
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            For example SNMP::Info has an entry in its %GLOBALS hash for
 | 
					            For example SNMP::Info has an entry in its %GLOBALS hash for
 | 
				
			||||||
            ``sysName'' instead of 1.3.6.1.2.1.1.5.
 | 
					            ``sysName'' instead of 1.3.6.1.2.1.1.5.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        *   Data returned is in the enumerated value form.
 | 
					        * Data returned is in the enumerated value form.
 | 
				
			||||||
 | 
					 | 
				
			||||||
            For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and
 | 
					            For Example instead of looking up 1.3.6.1.2.1.2.2.1.3 and
 | 
				
			||||||
            getting back 23
 | 
					            getting back `23'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            SNMP::Info will ask for "RFC1213-MIB::ifType" and will get back
 | 
					            SNMP::Info will ask for `RFC1213-MIB::ifType' and will get back
 | 
				
			||||||
            "ppp".
 | 
					            `ppp'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    2. SNMP::Info is easily extended to new devices
 | 
					    2. SNMP::Info is easily extended to new devices
 | 
				
			||||||
        You can create a new subclass for a device by providing four hashes
 | 
					        You can create a new subclass for a device by providing four hashes
 | 
				
			||||||
@@ -180,18 +170,16 @@ DESIGN GOALS
 | 
				
			|||||||
        inclusion in the next version.
 | 
					        inclusion in the next version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SUBCLASSES
 | 
					SUBCLASSES
 | 
				
			||||||
 | 
					 | 
				
			||||||
    These are the subclasses that implement MIBs and support devices:
 | 
					    These are the subclasses that implement MIBs and support devices:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Required MIBs not included in the install instructions above are noted
 | 
					    Required MIBs not included in the install instructions above are noted
 | 
				
			||||||
    here.
 | 
					    here.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  MIB Subclasses
 | 
					  MIB Subclasses
 | 
				
			||||||
 | 
					 | 
				
			||||||
    These subclasses implement method to access one or more MIBs. These are
 | 
					    These subclasses implement method to access one or more MIBs. These are
 | 
				
			||||||
    not used directly, but rather inherited from device subclasses.
 | 
					    not used directly, but rather inherited from device subclasses.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    For more info run "perldoc" on any of the following module names.
 | 
					    For more info run `perldoc' on any of the following module names.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info::AdslLine
 | 
					    SNMP::Info::AdslLine
 | 
				
			||||||
        SNMP Interface to the ADSL-LINE-MIB for ADSL interfaces.
 | 
					        SNMP Interface to the ADSL-LINE-MIB for ADSL interfaces.
 | 
				
			||||||
@@ -201,7 +189,7 @@ SUBCLASSES
 | 
				
			|||||||
        See documentation in SNMP::Info::AdslLine for details.
 | 
					        See documentation in SNMP::Info::AdslLine for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info::Aggregate
 | 
					    SNMP::Info::Aggregate
 | 
				
			||||||
        SNMP Interface to IF-MIB "ifStackTable" Aggregated Links
 | 
					        SNMP Interface to IF-MIB `ifStackTable' Aggregated Links
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        See documentation in SNMP::Info::Aggregate for details.
 | 
					        See documentation in SNMP::Info::Aggregate for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -336,6 +324,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        See documentation in SNMP::Info::MAU for details.
 | 
					        See documentation in SNMP::Info::MAU for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SNMP::Info::MRO
 | 
				
			||||||
 | 
					        Method resolution introspection for SNMP::Info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        See documentation in SNMP::Info::MRO for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info::NortelStack
 | 
					    SNMP::Info::NortelStack
 | 
				
			||||||
        S5-AGENT-MIB, S5-CHASSIS-MIB.
 | 
					        S5-AGENT-MIB, S5-CHASSIS-MIB.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -360,7 +353,6 @@ SUBCLASSES
 | 
				
			|||||||
        See documentation in SNMP::Info::SONMP for details.
 | 
					        See documentation in SNMP::Info::SONMP for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Device Subclasses
 | 
					  Device Subclasses
 | 
				
			||||||
 | 
					 | 
				
			||||||
    These subclasses inherit from one or more classes to provide a common
 | 
					    These subclasses inherit from one or more classes to provide a common
 | 
				
			||||||
    interface to data obtainable from network devices.
 | 
					    interface to data obtainable from network devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -413,6 +405,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer2::3Com for details.
 | 
					            See documentation in SNMP::Info::Layer2::3Com for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer2::Adtran
 | 
				
			||||||
 | 
					            Subclass for Adtran devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer2::Adtran for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer2::Airespace
 | 
					        SNMP::Info::Layer2::Airespace
 | 
				
			||||||
            Subclass for Cisco (Airespace) wireless controllers.
 | 
					            Subclass for Cisco (Airespace) wireless controllers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -456,7 +453,7 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer2::Catalyst
 | 
					        SNMP::Info::Layer2::Catalyst
 | 
				
			||||||
            Subclass for Cisco Catalyst switches running CatOS. These
 | 
					            Subclass for Cisco Catalyst switches running CatOS. These
 | 
				
			||||||
            switches usually report a model number that starts with "wsc".
 | 
					            switches usually report a model number that starts with `wsc'.
 | 
				
			||||||
            Note that this class does not support everything that has the
 | 
					            Note that this class does not support everything that has the
 | 
				
			||||||
            name Catalyst.
 | 
					            name Catalyst.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -531,7 +528,7 @@ SUBCLASSES
 | 
				
			|||||||
            See documentation in SNMP::Info::Layer2::Trapeze for details.
 | 
					            See documentation in SNMP::Info::Layer2::Trapeze for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer2::Ubiquiti
 | 
					        SNMP::Info::Layer2::Ubiquiti
 | 
				
			||||||
            SNMP Interface to Ubiquiti Access Points
 | 
					            SNMP Interface to Ubiquiti Access Points and other devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer2::Ubiquiti for details.
 | 
					            See documentation in SNMP::Info::Layer2::Ubiquiti for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -608,6 +605,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer3::C6500 for details.
 | 
					            See documentation in SNMP::Info::Layer3::C6500 for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::CheckPoint
 | 
				
			||||||
 | 
					            Subclass for CheckPoint devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::CheckPoint for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer3::Cisco
 | 
					        SNMP::Info::Layer3::Cisco
 | 
				
			||||||
            This is a simple wrapper around layer 3 for IOS devices and the
 | 
					            This is a simple wrapper around layer 3 for IOS devices and the
 | 
				
			||||||
            base layer 3 Cisco class for other device specific layer 3 Cisco
 | 
					            base layer 3 Cisco class for other device specific layer 3 Cisco
 | 
				
			||||||
@@ -634,6 +636,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer3::Contivity for details.
 | 
					            See documentation in SNMP::Info::Layer3::Contivity for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::DLink
 | 
				
			||||||
 | 
					            Subclass for DLink devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::DLink for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer3::Dell
 | 
					        SNMP::Info::Layer3::Dell
 | 
				
			||||||
            Subclass for Dell PowerConnect switches. D-Link, the IBM
 | 
					            Subclass for Dell PowerConnect switches. D-Link, the IBM
 | 
				
			||||||
            BladeCenter Gigabit Ethernet Switch Module and some Linksys
 | 
					            BladeCenter Gigabit Ethernet Switch Module and some Linksys
 | 
				
			||||||
@@ -661,6 +668,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer3::Force10 for details.
 | 
					            See documentation in SNMP::Info::Layer3::Force10 for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::Fortinet
 | 
				
			||||||
 | 
					            Subclass for Fortinet devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::Fortinet for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer3::Foundry
 | 
					        SNMP::Info::Layer3::Foundry
 | 
				
			||||||
            Subclass for Brocade (Foundry) Network devices.
 | 
					            Subclass for Brocade (Foundry) Network devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -678,6 +690,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer3::HP9300 for details.
 | 
					            See documentation in SNMP::Info::Layer3::HP9300 for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::Huawei
 | 
				
			||||||
 | 
					            SNMP Interface to Huawei Layer 3 switches and routers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::Huawei for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer3::IBMGbTor
 | 
					        SNMP::Info::Layer3::IBMGbTor
 | 
				
			||||||
            SNMP Interface to IBM Rackswitch (formerly Blade Network
 | 
					            SNMP Interface to IBM Rackswitch (formerly Blade Network
 | 
				
			||||||
            Technologies) network devices.
 | 
					            Technologies) network devices.
 | 
				
			||||||
@@ -731,6 +748,11 @@ SUBCLASSES
 | 
				
			|||||||
            See documentation in SNMP::Info::Layer3::PacketFront for
 | 
					            See documentation in SNMP::Info::Layer3::PacketFront for
 | 
				
			||||||
            details.
 | 
					            details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::PaloAlto
 | 
				
			||||||
 | 
					            Subclass for Palo Alto firewalls.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::PaloAlto for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer3::Passport
 | 
					        SNMP::Info::Layer3::Passport
 | 
				
			||||||
            Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000
 | 
					            Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000
 | 
				
			||||||
            series, Accelar, and VSP 9000 series switches.
 | 
					            series, Accelar, and VSP 9000 series switches.
 | 
				
			||||||
@@ -770,6 +792,16 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer3::Timetra for details.
 | 
					            See documentation in SNMP::Info::Layer3::Timetra for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::VyOS
 | 
				
			||||||
 | 
					            Subclass for VyOS routers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::VyOS for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer3::VMware
 | 
				
			||||||
 | 
					            Subclass for VMware ESXi hosts.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer3::VMware for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP::Info::Layer7
 | 
					    SNMP::Info::Layer7
 | 
				
			||||||
        Generic Layer7 Devices.
 | 
					        Generic Layer7 Devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -780,6 +812,11 @@ SUBCLASSES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            See documentation in SNMP::Info::Layer7::APC for details.
 | 
					            See documentation in SNMP::Info::Layer7::APC for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SNMP::Info::Layer7::CiscoIPS
 | 
				
			||||||
 | 
					            SNMP Interface to Cisco IPS devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            See documentation in SNMP::Info::Layer7::Cisco IPS for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SNMP::Info::Layer7::Netscaler
 | 
					        SNMP::Info::Layer7::Netscaler
 | 
				
			||||||
            SNMP Interface to Citrix Netscaler appliances
 | 
					            SNMP Interface to Citrix Netscaler appliances
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -791,7 +828,6 @@ SUBCLASSES
 | 
				
			|||||||
            See documentation in SNMP::Info::Layer7::Neoteris for details.
 | 
					            See documentation in SNMP::Info::Layer7::Neoteris for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Thanks
 | 
					Thanks
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Thanks for testing and coding help (in no particular order) to :
 | 
					    Thanks for testing and coding help (in no particular order) to :
 | 
				
			||||||
    Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
 | 
					    Alexander Barthel, Andy Ford, Alexander Hartmaier, Andrew Herrick, Alex
 | 
				
			||||||
    Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
 | 
					    Kramarov, Bernhard Augenstein, Bradley Baetz, Brian Chow, Brian Wilson,
 | 
				
			||||||
@@ -802,9 +838,7 @@ Thanks
 | 
				
			|||||||
    Netdisco README!
 | 
					    Netdisco README!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
USAGE
 | 
					USAGE
 | 
				
			||||||
 | 
					 | 
				
			||||||
  Constructor
 | 
					  Constructor
 | 
				
			||||||
 | 
					 | 
				
			||||||
    new()
 | 
					    new()
 | 
				
			||||||
        Creates a new object and connects via SNMP::Session.
 | 
					        Creates a new object and connects via SNMP::Session.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -835,7 +869,7 @@ USAGE
 | 
				
			|||||||
            (default 0, which means "off")
 | 
					            (default 0, which means "off")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        BulkWalk
 | 
					        BulkWalk
 | 
				
			||||||
            Set to 0 to turn off BULKWALK commands for SNMPv2 connections.
 | 
					            Set to `0' to turn off BULKWALK commands for SNMPv2 connections.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Note that BULKWALK is turned off for Net-SNMP versions 5.1.x
 | 
					            Note that BULKWALK is turned off for Net-SNMP versions 5.1.x
 | 
				
			||||||
            because of a bug.
 | 
					            because of a bug.
 | 
				
			||||||
@@ -843,8 +877,8 @@ USAGE
 | 
				
			|||||||
            (default 1, which means "on")
 | 
					            (default 1, which means "on")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        BulkRepeaters
 | 
					        BulkRepeaters
 | 
				
			||||||
            Set number of MaxRepeaters for BULKWALK operation. See "perldoc
 | 
					            Set number of MaxRepeaters for BULKWALK operation. See `perldoc
 | 
				
			||||||
            SNMP" -> bulkwalk() for more info.
 | 
					            SNMP' -> bulkwalk() for more info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (default 20)
 | 
					            (default 20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -855,7 +889,7 @@ USAGE
 | 
				
			|||||||
            detect loops during a bulkwalk operation, Net-SNMP's internal
 | 
					            detect loops during a bulkwalk operation, Net-SNMP's internal
 | 
				
			||||||
            bulkwalk function must detect the loop.
 | 
					            bulkwalk function must detect the loop.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Set to 0 to turn off loop detection.
 | 
					            Set to `0' to turn off loop detection.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (default 1, which means "on")
 | 
					            (default 1, which means "on")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -865,8 +899,8 @@ USAGE
 | 
				
			|||||||
            /usr/lib(64)/snmp, or $HOME/.snmp and uses those settings to
 | 
					            /usr/lib(64)/snmp, or $HOME/.snmp and uses those settings to
 | 
				
			||||||
            automatically parse MIB files, etc.
 | 
					            automatically parse MIB files, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Set to 1 "on" to ignore Net-SNMP configuration files by
 | 
					            Set to `1' "on" to ignore Net-SNMP configuration files by
 | 
				
			||||||
            overriding the "SNMPCONFPATH" environmental variable during
 | 
					            overriding the `SNMPCONFPATH' environmental variable during
 | 
				
			||||||
            object initialization. Note: MibDirs must be defined or Net-SNMP
 | 
					            object initialization. Note: MibDirs must be defined or Net-SNMP
 | 
				
			||||||
            will not be able to load MIBs and initialize the object.
 | 
					            will not be able to load MIBs and initialize the object.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -906,14 +940,14 @@ USAGE
 | 
				
			|||||||
        Offline
 | 
					        Offline
 | 
				
			||||||
            Causes SNMP::Info to avoid network activity and return data only
 | 
					            Causes SNMP::Info to avoid network activity and return data only
 | 
				
			||||||
            from its cache. If you ask for something not in the cache, an
 | 
					            from its cache. If you ask for something not in the cache, an
 | 
				
			||||||
            error is thrown. See also the "cache()" and "offline()" methods.
 | 
					            error is thrown. See also the `cache()' and `offline()' methods.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (default 0, which means "online")
 | 
					            (default 0, which means "online")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Cache
 | 
					        Cache
 | 
				
			||||||
            Pass in a HashRef to prime the cache of retrieved data. Useful
 | 
					            Pass in a HashRef to prime the cache of retrieved data. Useful
 | 
				
			||||||
            for creating an instance in "Offline" mode from a previously
 | 
					            for creating an instance in `Offline' mode from a previously
 | 
				
			||||||
            dumped cache. See also the "cache()" method to retrieve a cache
 | 
					            dumped cache. See also the `cache()' method to retrieve a cache
 | 
				
			||||||
            after running actial queries.
 | 
					            after running actial queries.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OTHER
 | 
					        OTHER
 | 
				
			||||||
@@ -950,11 +984,10 @@ USAGE
 | 
				
			|||||||
        This is useful, e.g., when a device supports multiple contexts (via
 | 
					        This is useful, e.g., when a device supports multiple contexts (via
 | 
				
			||||||
        changes to the Community string, or via the SNMPv3 Context
 | 
					        changes to the Community string, or via the SNMPv3 Context
 | 
				
			||||||
        parameter), but a context that you want to access does not support
 | 
					        parameter), but a context that you want to access does not support
 | 
				
			||||||
        the objects (e.g., "sysObjectID", "sysDescr") that we use to
 | 
					        the objects (e.g., `sysObjectID', `sysDescr') that we use to
 | 
				
			||||||
        identify the device.
 | 
					        identify the device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Data is Cached
 | 
					  Data is Cached
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Methods and subroutines requesting data from a device will only load the
 | 
					    Methods and subroutines requesting data from a device will only load the
 | 
				
			||||||
    data once, and then return cached versions of that data.
 | 
					    data once, and then return cached versions of that data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -964,11 +997,10 @@ USAGE
 | 
				
			|||||||
    Run $info->clear_cache() to clear the cache to allow reload of both
 | 
					    Run $info->clear_cache() to clear the cache to allow reload of both
 | 
				
			||||||
    globals and table methods.
 | 
					    globals and table methods.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    The cache can be retreved or set using the $info->cache() method. This
 | 
					    The cache can be retrieved or set using the $info->cache() method. This
 | 
				
			||||||
    works together with the "Offline" option.
 | 
					    works together with the `Offline' option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Object Scalar Methods
 | 
					  Object Scalar Methods
 | 
				
			||||||
 | 
					 | 
				
			||||||
    These are for package related data, not directly supplied from SNMP.
 | 
					    These are for package related data, not directly supplied from SNMP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->clear_cache()
 | 
					    $info->clear_cache()
 | 
				
			||||||
@@ -986,7 +1018,7 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    $info->cache([new_cache])
 | 
					    $info->cache([new_cache])
 | 
				
			||||||
        Returns a HashRef of all cached data in this object. There will be a
 | 
					        Returns a HashRef of all cached data in this object. There will be a
 | 
				
			||||||
        "store" key for table data and then one key for each leaf.
 | 
					        `store' key for table data and then one key for each leaf.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Optionally sets the cache parameters if passed a HashRef.
 | 
					        Optionally sets the cache parameters if passed a HashRef.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1001,7 +1033,7 @@ USAGE
 | 
				
			|||||||
        Optionally sets the loopdetect parameter.
 | 
					        Optionally sets the loopdetect parameter.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->device_type()
 | 
					    $info->device_type()
 | 
				
			||||||
        Returns the Subclass name for this device. "SNMP::Info" is returned
 | 
					        Returns the Subclass name for this device. `SNMP::Info' is returned
 | 
				
			||||||
        if no more specific class is available.
 | 
					        if no more specific class is available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        First the device is checked for Layer 3 support and a specific
 | 
					        First the device is checked for Layer 3 support and a specific
 | 
				
			||||||
@@ -1013,10 +1045,6 @@ USAGE
 | 
				
			|||||||
        If the device still can be connected to via SNMP::Info, then
 | 
					        If the device still can be connected to via SNMP::Info, then
 | 
				
			||||||
        SNMP::Info is returned.
 | 
					        SNMP::Info is returned.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        See <http://netdisco.org/doc/DeviceMatrix.html> or DeviceMatrix.txt
 | 
					 | 
				
			||||||
        for more details about device support, or view "device_type()" in
 | 
					 | 
				
			||||||
        Info.pm.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $info->error(no_clear)
 | 
					    $info->error(no_clear)
 | 
				
			||||||
        Returns Error message if there is an error, or undef if there is
 | 
					        Returns Error message if there is an error, or undef if there is
 | 
				
			||||||
        not.
 | 
					        not.
 | 
				
			||||||
@@ -1052,11 +1080,10 @@ USAGE
 | 
				
			|||||||
        calls on certain Cisco devices.
 | 
					        calls on certain Cisco devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        See
 | 
					        See
 | 
				
			||||||
        <ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-community
 | 
					        ftp://ftp.cisco.com/pub/mibs/supportlists/wsc5000/wsc5000-communityI
 | 
				
			||||||
        Indexing.html>
 | 
					        ndexing.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Globals (Scalar Methods)
 | 
					  Globals (Scalar Methods)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    These are methods to return scalar data from RFC1213.
 | 
					    These are methods to return scalar data from RFC1213.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Some subset of these is probably available for any network device that
 | 
					    Some subset of these is probably available for any network device that
 | 
				
			||||||
@@ -1065,16 +1092,16 @@ USAGE
 | 
				
			|||||||
    $info->uptime()
 | 
					    $info->uptime()
 | 
				
			||||||
        Uptime in hundredths of seconds since device became available.
 | 
					        Uptime in hundredths of seconds since device became available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("sysUpTime")
 | 
					        (`sysUpTime')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->contact()
 | 
					    $info->contact()
 | 
				
			||||||
        ("sysContact")
 | 
					        (`sysContact')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->name()
 | 
					    $info->name()
 | 
				
			||||||
        ("sysName")
 | 
					        (`sysName')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->location()
 | 
					    $info->location()
 | 
				
			||||||
        ("sysLocation")
 | 
					        (`sysLocation')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->layers()
 | 
					    $info->layers()
 | 
				
			||||||
        This returns a binary encoded string where each digit represents a
 | 
					        This returns a binary encoded string where each digit represents a
 | 
				
			||||||
@@ -1087,7 +1114,7 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        See $info->has_layer()
 | 
					        See $info->has_layer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("sysServices")
 | 
					        (`sysServices')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ports()
 | 
					    $info->ports()
 | 
				
			||||||
        Number of interfaces available on this device.
 | 
					        Number of interfaces available on this device.
 | 
				
			||||||
@@ -1095,17 +1122,16 @@ USAGE
 | 
				
			|||||||
        Not too useful as the number of SNMP interfaces usually does not
 | 
					        Not too useful as the number of SNMP interfaces usually does not
 | 
				
			||||||
        correspond with the number of physical ports
 | 
					        correspond with the number of physical ports
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifNumber")
 | 
					        (`ifNumber')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipforwarding()
 | 
					    $info->ipforwarding()
 | 
				
			||||||
        The indication of whether the entity is acting as an IP gateway
 | 
					        The indication of whether the entity is acting as an IP gateway
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Returns either forwarding or not-forwarding
 | 
					        Returns either forwarding or not-forwarding
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipForwarding")
 | 
					        (`ipForwarding')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Table Methods
 | 
					  Table Methods
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Each of these methods returns a hash_reference to a hash keyed on the
 | 
					    Each of these methods returns a hash_reference to a hash keyed on the
 | 
				
			||||||
    interface index in SNMP.
 | 
					    interface index in SNMP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1120,14 +1146,13 @@ USAGE
 | 
				
			|||||||
    cases changes between reboots of the network device.
 | 
					    cases changes between reboots of the network device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Partial Table Fetches
 | 
					  Partial Table Fetches
 | 
				
			||||||
 | 
					 | 
				
			||||||
    If you want to get only a part of an SNMP table or a single instance
 | 
					    If you want to get only a part of an SNMP table or a single instance
 | 
				
			||||||
    from the table and you know the IID for the part of the table that you
 | 
					    from the table and you know the IID for the part of the table that you
 | 
				
			||||||
    want, you can specify it in the call:
 | 
					    want, you can specify it in the call:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $local_routes = $info->ipr_route('192.168.0');
 | 
					        $local_routes = $info->ipr_route('192.168.0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    This will only fetch entries in the table that start with 192.168.0,
 | 
					    This will only fetch entries in the table that start with `192.168.0',
 | 
				
			||||||
    which in this case are routes on the local network.
 | 
					    which in this case are routes on the local network.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Remember that you must supply the partial IID (a numeric OID).
 | 
					    Remember that you must supply the partial IID (a numeric OID).
 | 
				
			||||||
@@ -1135,7 +1160,6 @@ USAGE
 | 
				
			|||||||
    Partial table results are not cached.
 | 
					    Partial table results are not cached.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Interface Information
 | 
					  Interface Information
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $info->interfaces()
 | 
					    $info->interfaces()
 | 
				
			||||||
        This methods is overridden in each subclass to provide a mapping
 | 
					        This methods is overridden in each subclass to provide a mapping
 | 
				
			||||||
        between the Interface Table Index (iid) and the physical port name.
 | 
					        between the Interface Table Index (iid) and the physical port name.
 | 
				
			||||||
@@ -1155,82 +1179,81 @@ USAGE
 | 
				
			|||||||
    $info->i_index()
 | 
					    $info->i_index()
 | 
				
			||||||
        Default SNMP IID to Interface index.
 | 
					        Default SNMP IID to Interface index.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifIndex")
 | 
					        (`ifIndex')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_description()
 | 
					    $info->i_description()
 | 
				
			||||||
        Description of the interface. Usually a little longer single word
 | 
					        Description of the interface. Usually a little longer single word
 | 
				
			||||||
        name that is both human and machine friendly. Not always.
 | 
					        name that is both human and machine friendly. Not always.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifDescr")
 | 
					        (`ifDescr')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_type()
 | 
					    $info->i_type()
 | 
				
			||||||
        Interface type, such as Vlan, Ethernet, Serial
 | 
					        Interface type, such as Vlan, Ethernet, Serial
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifType")
 | 
					        (`ifType')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_mtu()
 | 
					    $info->i_mtu()
 | 
				
			||||||
        INTEGER. Interface MTU value.
 | 
					        INTEGER. Interface MTU value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifMtu")
 | 
					        (`ifMtu')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_speed()
 | 
					    $info->i_speed()
 | 
				
			||||||
        Speed of the link, human format. See munge_speed() later in document
 | 
					        Speed of the link, human format. See munge_speed() later in document
 | 
				
			||||||
        for details.
 | 
					        for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifSpeed", "ifHighSpeed" if necessary)
 | 
					        (`ifSpeed', `ifHighSpeed' if necessary)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_speed_raw()
 | 
					    $info->i_speed_raw()
 | 
				
			||||||
        Speed of the link in bits per second without munging. If
 | 
					        Speed of the link in bits per second without munging. If
 | 
				
			||||||
        i_speed_high is available it will be used and multiplied by
 | 
					        i_speed_high is available it will be used and multiplied by
 | 
				
			||||||
        1_000_000.
 | 
					        1_000_000.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifSpeed", "ifHighSpeed" if necessary)
 | 
					        (`ifSpeed', `ifHighSpeed' if necessary)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_speed_high()
 | 
					    $info->i_speed_high()
 | 
				
			||||||
        Speed of a high-speed link, human format. See munge_highspeed()
 | 
					        Speed of a high-speed link, human format. See munge_highspeed()
 | 
				
			||||||
        later in document for details. You should not need to call this
 | 
					        later in document for details. You should not need to call this
 | 
				
			||||||
        directly, as i_speed() will call it if it needs to.
 | 
					        directly, as i_speed() will call it if it needs to.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifHighSpeed")
 | 
					        (`ifHighSpeed')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_mac()
 | 
					    $info->i_mac()
 | 
				
			||||||
        MAC address of the interface. Note this is just the MAC of the port,
 | 
					        MAC address of the interface. Note this is just the MAC of the port,
 | 
				
			||||||
        not anything connected to it.
 | 
					        not anything connected to it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifPhysAddress")
 | 
					        (`ifPhysAddress')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_up()
 | 
					    $info->i_up()
 | 
				
			||||||
        Link Status of the interface. Typical values are 'up' and 'down'.
 | 
					        Link Status of the interface. Typical values are 'up' and 'down'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifOperStatus")
 | 
					        (`ifOperStatus')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_up_admin()
 | 
					    $info->i_up_admin()
 | 
				
			||||||
        Administrative status of the port. Typical values are 'enabled' and
 | 
					        Administrative status of the port. Typical values are 'enabled' and
 | 
				
			||||||
        'disabled'.
 | 
					        'disabled'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifAdminStatus")
 | 
					        (`ifAdminStatus')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_lastchange()
 | 
					    $info->i_lastchange()
 | 
				
			||||||
        The value of "sysUpTime" when this port last changed states
 | 
					        The value of `sysUpTime' when this port last changed states
 | 
				
			||||||
        (up,down).
 | 
					        (up,down).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifLastChange")
 | 
					        (`ifLastChange')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_name()
 | 
					    $info->i_name()
 | 
				
			||||||
        Interface Name field. Supported by a smaller subset of devices, this
 | 
					        Interface Name field. Supported by a smaller subset of devices, this
 | 
				
			||||||
        fields is often human set.
 | 
					        fields is often human set.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifName")
 | 
					        (`ifName')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_alias()
 | 
					    $info->i_alias()
 | 
				
			||||||
        Interface Name field. For certain devices this is a more human
 | 
					        Interface Name field. For certain devices this is a more human
 | 
				
			||||||
        friendly form of i_description(). For others it is a human set field
 | 
					        friendly form of i_description(). For others it is a human set field
 | 
				
			||||||
        like i_name().
 | 
					        like i_name().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifAlias")
 | 
					        (`ifAlias')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Interface Statistics
 | 
					  Interface Statistics
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
 | 
					    $info->i_octet_in(), $info->i_octets_out(), $info->i_octet_in64(),
 | 
				
			||||||
    $info->i_octets_out64()
 | 
					    $info->i_octets_out64()
 | 
				
			||||||
        Bandwidth.
 | 
					        Bandwidth.
 | 
				
			||||||
@@ -1245,13 +1268,13 @@ USAGE
 | 
				
			|||||||
        global $SNMP::Info::BIGINT to 1 , or pass the BigInt value to new()
 | 
					        global $SNMP::Info::BIGINT to 1 , or pass the BigInt value to new()
 | 
				
			||||||
        if you want SNMP::Info to do it for you.
 | 
					        if you want SNMP::Info to do it for you.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInOctets") ("ifOutOctets") ("ifHCInOctets") ("ifHCOutOctets")
 | 
					        (`ifInOctets') (`ifOutOctets') (`ifHCInOctets') (`ifHCOutOctets')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_errors_in(), $info->i_errors_out()
 | 
					    $info->i_errors_in(), $info->i_errors_out()
 | 
				
			||||||
        Number of packets that contained an error preventing delivery. See
 | 
					        Number of packets that contained an error preventing delivery. See
 | 
				
			||||||
        "IF-MIB" for more info.
 | 
					        `IF-MIB' for more info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInErrors") ("ifOutErrors")
 | 
					        (`ifInErrors') (`ifOutErrors')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_pkts_ucast_in(), $info->i_pkts_ucast_out(),
 | 
					    $info->i_pkts_ucast_in(), $info->i_pkts_ucast_out(),
 | 
				
			||||||
    $info->i_pkts_ucast_in64(), $info->i_pkts_ucast_out64()
 | 
					    $info->i_pkts_ucast_in64(), $info->i_pkts_ucast_out64()
 | 
				
			||||||
@@ -1259,17 +1282,17 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        64 bit version may not exist on all devices.
 | 
					        64 bit version may not exist on all devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInUcastPkts") ("ifOutUcastPkts") ("ifHCInUcastPkts")
 | 
					        (`ifInUcastPkts') (`ifOutUcastPkts') (`ifHCInUcastPkts')
 | 
				
			||||||
        ("ifHCOutUcastPkts")
 | 
					        (`ifHCOutUcastPkts')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_pkts_nucast_in(), $info->i_pkts_nucast_out(),
 | 
					    $info->i_pkts_nucast_in(), $info->i_pkts_nucast_out(),
 | 
				
			||||||
        Number of packets sent to a multicast or broadcast address.
 | 
					        Number of packets sent to a multicast or broadcast address.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        These methods are deprecated by i_pkts_multi_in() and
 | 
					        These methods are deprecated by i_pkts_multi_in() and
 | 
				
			||||||
        i_pkts_bcast_in() according to "IF-MIB". Actual device usage may
 | 
					        i_pkts_bcast_in() according to `IF-MIB'. Actual device usage may
 | 
				
			||||||
        vary.
 | 
					        vary.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInNUcastPkts") ("ifOutNUcastPkts")
 | 
					        (`ifInNUcastPkts') (`ifOutNUcastPkts')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_pkts_multi_in() $info->i_pkts_multi_out(),
 | 
					    $info->i_pkts_multi_in() $info->i_pkts_multi_out(),
 | 
				
			||||||
    $info->i_pkts_multi_in64(), $info->i_pkts_multi_out64()
 | 
					    $info->i_pkts_multi_in64(), $info->i_pkts_multi_out64()
 | 
				
			||||||
@@ -1277,8 +1300,8 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        64 bit version may not exist on all devices.
 | 
					        64 bit version may not exist on all devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInMulticastPkts") ("ifOutMulticastPkts") ("ifHCInMulticastPkts")
 | 
					        (`ifInMulticastPkts') (`ifOutMulticastPkts') (`ifHCInMulticastPkts')
 | 
				
			||||||
        ("ifHCOutMulticastPkts")
 | 
					        (`ifHCOutMulticastPkts')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_pkts_bcast_in() $info->i_pkts_bcast_out(),
 | 
					    $info->i_pkts_bcast_in() $info->i_pkts_bcast_out(),
 | 
				
			||||||
    $info->i_pkts_bcast_in64() $info->i_pkts_bcast_out64()
 | 
					    $info->i_pkts_bcast_in64() $info->i_pkts_bcast_out64()
 | 
				
			||||||
@@ -1286,17 +1309,17 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        64 bit version may not exist on all devices.
 | 
					        64 bit version may not exist on all devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInBroadcastPkts") ("ifOutBroadcastPkts") ("ifHCInBroadcastPkts")
 | 
					        (`ifInBroadcastPkts') (`ifOutBroadcastPkts') (`ifHCInBroadcastPkts')
 | 
				
			||||||
        ("ifHCOutBroadcastPkts")
 | 
					        (`ifHCOutBroadcastPkts')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_discards_in() $info->i_discards_out()
 | 
					    $info->i_discards_in() $info->i_discards_out()
 | 
				
			||||||
        "The number of inbound packets which were chosen to be discarded
 | 
					        "The number of inbound packets which were chosen to be discarded
 | 
				
			||||||
        even though no errors had been detected to prevent their being
 | 
					        even though no errors had been detected to prevent their being
 | 
				
			||||||
        deliverable to a higher-layer protocol. One possible reason for
 | 
					        deliverable to a higher-layer protocol. One possible reason for
 | 
				
			||||||
        discarding such a packet could be to free up buffer space."
 | 
					        discarding such a packet could be to free up buffer space."
 | 
				
			||||||
        ("IF-MIB")
 | 
					        (`IF-MIB')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInDiscards") ("ifOutDiscards")
 | 
					        (`ifInDiscards') (`ifOutDiscards')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_bad_proto_in()
 | 
					    $info->i_bad_proto_in()
 | 
				
			||||||
        "For packet-oriented interfaces, the number of packets received via
 | 
					        "For packet-oriented interfaces, the number of packets received via
 | 
				
			||||||
@@ -1308,74 +1331,72 @@ USAGE
 | 
				
			|||||||
        that does not support protocol multiplexing, this counter will
 | 
					        that does not support protocol multiplexing, this counter will
 | 
				
			||||||
        always be 0."
 | 
					        always be 0."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifInUnknownProtos")
 | 
					        (`ifInUnknownProtos')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_qlen_out()
 | 
					    $info->i_qlen_out()
 | 
				
			||||||
        "The length of the output packet queue (in packets)."
 | 
					        "The length of the output packet queue (in packets)."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifOutQLen")
 | 
					        (`ifOutQLen')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->i_specific()
 | 
					    $info->i_specific()
 | 
				
			||||||
        See "IF-MIB" for full description
 | 
					        See `IF-MIB' for full description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ifSpecific")
 | 
					        (`ifSpecific')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  IP Address Table
 | 
					  IP Address Table
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Each entry in this table is an IP address in use on this device. Usually
 | 
					    Each entry in this table is an IP address in use on this device. Usually
 | 
				
			||||||
    this is implemented in Layer3 Devices.
 | 
					    this is implemented in Layer3 Devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ip_index()
 | 
					    $info->ip_index()
 | 
				
			||||||
        Maps the IP Table to the IID
 | 
					        Maps the IP Table to the IID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipAdEntIfIndex")
 | 
					        (`ipAdEntIfIndex')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ip_table()
 | 
					    $info->ip_table()
 | 
				
			||||||
        Maps the Table to the IP address
 | 
					        Maps the Table to the IP address
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipAdEntAddr")
 | 
					        (`ipAdEntAddr')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ip_netmask()
 | 
					    $info->ip_netmask()
 | 
				
			||||||
        Gives netmask setting for IP table entry.
 | 
					        Gives netmask setting for IP table entry.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipAdEntNetMask")
 | 
					        (`ipAdEntNetMask')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ip_broadcast()
 | 
					    $info->ip_broadcast()
 | 
				
			||||||
        Gives broadcast address for IP table entry.
 | 
					        Gives broadcast address for IP table entry.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipAdEntBcastAddr")
 | 
					        (`ipAdEntBcastAddr')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  IP Routing Table
 | 
					  IP Routing Table
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $info->ipr_route()
 | 
					    $info->ipr_route()
 | 
				
			||||||
        The route in question. A value of 0.0.0.0 is the default gateway
 | 
					        The route in question. A value of 0.0.0.0 is the default gateway
 | 
				
			||||||
        route.
 | 
					        route.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteDest")
 | 
					        (`ipRouteDest')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_if()
 | 
					    $info->ipr_if()
 | 
				
			||||||
        The interface (IID) that the route is on. Use interfaces() to map.
 | 
					        The interface (IID) that the route is on. Use interfaces() to map.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteIfIndex")
 | 
					        (`ipRouteIfIndex')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_1()
 | 
					    $info->ipr_1()
 | 
				
			||||||
        Primary routing metric for this route.
 | 
					        Primary routing metric for this route.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteMetric1")
 | 
					        (`ipRouteMetric1')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_2()
 | 
					    $info->ipr_2()
 | 
				
			||||||
        If metrics are not used, they should be set to -1
 | 
					        If metrics are not used, they should be set to -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteMetric2")
 | 
					        (`ipRouteMetric2')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_3()
 | 
					    $info->ipr_3()
 | 
				
			||||||
        ("ipRouteMetric3")
 | 
					        (`ipRouteMetric3')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_4()
 | 
					    $info->ipr_4()
 | 
				
			||||||
        ("ipRouteMetric4")
 | 
					        (`ipRouteMetric4')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_5()
 | 
					    $info->ipr_5()
 | 
				
			||||||
        ("ipRouteMetric5")
 | 
					        (`ipRouteMetric5')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_dest()
 | 
					    $info->ipr_dest()
 | 
				
			||||||
        From RFC1213:
 | 
					        From RFC1213:
 | 
				
			||||||
@@ -1386,7 +1407,7 @@ USAGE
 | 
				
			|||||||
          of this field is the agent's IP address on that
 | 
					          of this field is the agent's IP address on that
 | 
				
			||||||
          interface.)"
 | 
					          interface.)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteNextHop")
 | 
					        (`ipRouteNextHop')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_type()
 | 
					    $info->ipr_type()
 | 
				
			||||||
        From RFC1213:
 | 
					        From RFC1213:
 | 
				
			||||||
@@ -1398,7 +1419,6 @@ USAGE
 | 
				
			|||||||
                             -- route to a non-local
 | 
					                             -- route to a non-local
 | 
				
			||||||
            indirect(4)      -- host/network/sub-network
 | 
					            indirect(4)      -- host/network/sub-network
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
              "The type of route.  Note that the values
 | 
					              "The type of route.  Note that the values
 | 
				
			||||||
              direct(3) and indirect(4) refer to the notion of
 | 
					              direct(3) and indirect(4) refer to the notion of
 | 
				
			||||||
              direct and indirect routing in the IP
 | 
					              direct and indirect routing in the IP
 | 
				
			||||||
@@ -1418,7 +1438,7 @@ USAGE
 | 
				
			|||||||
              Proper interpretation of such entries requires
 | 
					              Proper interpretation of such entries requires
 | 
				
			||||||
              examination of the relevant ipRouteType object."
 | 
					              examination of the relevant ipRouteType object."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteType")
 | 
					        (`ipRouteType')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_proto()
 | 
					    $info->ipr_proto()
 | 
				
			||||||
        From RFC1213:
 | 
					        From RFC1213:
 | 
				
			||||||
@@ -1445,25 +1465,24 @@ USAGE
 | 
				
			|||||||
            ospf(13),
 | 
					            ospf(13),
 | 
				
			||||||
            bgp(14)
 | 
					            bgp(14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteProto")
 | 
					        (`ipRouteProto')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_age()
 | 
					    $info->ipr_age()
 | 
				
			||||||
        Seconds since route was last updated or validated.
 | 
					        Seconds since route was last updated or validated.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteAge")
 | 
					        (`ipRouteAge')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_mask()
 | 
					    $info->ipr_mask()
 | 
				
			||||||
        Subnet Mask of route. 0.0.0.0 for default gateway.
 | 
					        Subnet Mask of route. 0.0.0.0 for default gateway.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteMask")
 | 
					        (`ipRouteMask')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->ipr_info()
 | 
					    $info->ipr_info()
 | 
				
			||||||
        Reference to MIB definition specific to routing protocol.
 | 
					        Reference to MIB definition specific to routing protocol.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ("ipRouteInfo")
 | 
					        (`ipRouteInfo')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Topology Information
 | 
					  Topology Information
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Based upon the manufacturer and software version devices may support
 | 
					    Based upon the manufacturer and software version devices may support
 | 
				
			||||||
    some combination of Layer 2 topology protocol information. SNMP::Info
 | 
					    some combination of Layer 2 topology protocol information. SNMP::Info
 | 
				
			||||||
    supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
 | 
					    supports querying Link Layer Discovery Protocol (LLDP), Cisco Discovery
 | 
				
			||||||
@@ -1480,18 +1499,16 @@ USAGE
 | 
				
			|||||||
    EDP: See SNMP::Info::EDP for details.
 | 
					    EDP: See SNMP::Info::EDP for details.
 | 
				
			||||||
    AMAP: See SNMP::Info::AMAP for details.
 | 
					    AMAP: See SNMP::Info::AMAP for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Topology Capabilities
 | 
					    Topology Capabilities
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $info->has_topo()
 | 
					    $info->has_topo()
 | 
				
			||||||
        Reports Layer 2 topology protocols which are supported and running
 | 
					        Reports Layer 2 topology protocols which are supported and running
 | 
				
			||||||
        on a device.
 | 
					        on a device.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Returns either a reference to an array of protocols, possible values
 | 
					        Returns either a reference to an array of protocols, possible values
 | 
				
			||||||
        being: "lldp", "cdp", "sonmp", "fdp", "edp", "amap" or "undef" if no
 | 
					        being: `lldp', `cdp', `sonmp', `fdp', `edp', `amap' or `undef' if no
 | 
				
			||||||
        protocols are supported or running.
 | 
					        protocols are supported or running.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Common Topology Table Information
 | 
					    Common Topology Table Information
 | 
				
			||||||
 | 
					 | 
				
			||||||
    The common topology table methods below will query the device for
 | 
					    The common topology table methods below will query the device for
 | 
				
			||||||
    information from the specified topology protocols and return a single
 | 
					    information from the specified topology protocols and return a single
 | 
				
			||||||
    hash combining all information. As a result, there may be identical
 | 
					    hash combining all information. As a result, there may be identical
 | 
				
			||||||
@@ -1506,7 +1523,7 @@ USAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    If a reference to an array is provided as the second argument, those
 | 
					    If a reference to an array is provided as the second argument, those
 | 
				
			||||||
    protocols will be queried for information. The supported array values
 | 
					    protocols will be queried for information. The supported array values
 | 
				
			||||||
    are: "lldp", "cdp", "sonmp", "fdp", "edp", "amap".
 | 
					    are: `lldp', `cdp', `sonmp', `fdp', `edp', `amap'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    If nothing is passed in as the second argument, the methods will call
 | 
					    If nothing is passed in as the second argument, the methods will call
 | 
				
			||||||
    has_topo() to determine supported and running topology protocols on the
 | 
					    has_topo() to determine supported and running topology protocols on the
 | 
				
			||||||
@@ -1542,7 +1559,7 @@ USAGE
 | 
				
			|||||||
        Returns reference to hash. Key: iid, Value: Remote Device Type
 | 
					        Returns reference to hash. Key: iid, Value: Remote Device Type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Note: EDP does not provide this information. LLDP uses
 | 
					        Note: EDP does not provide this information. LLDP uses
 | 
				
			||||||
        ("lldpRemSysDesc") or "lldp_rem_sysname" as the closest match.
 | 
					        (`lldpRemSysDesc') or `lldp_rem_sysname' as the closest match.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->c_cap(partial, topology_protocol_arrayref)
 | 
					    $info->c_cap(partial, topology_protocol_arrayref)
 | 
				
			||||||
        Returns reference to hash of arrays. Key: iid, Value: Array of
 | 
					        Returns reference to hash of arrays. Key: iid, Value: Array of
 | 
				
			||||||
@@ -1552,7 +1569,6 @@ USAGE
 | 
				
			|||||||
        Note: Only CDP and LLDP support this method.
 | 
					        Note: Only CDP and LLDP support this method.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SETTING DATA VIA SNMP
 | 
					SETTING DATA VIA SNMP
 | 
				
			||||||
 | 
					 | 
				
			||||||
    This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
					    This section explains how to use SNMP::Info to do SNMP Set operations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $info->set_METHOD($value)
 | 
					    $info->set_METHOD($value)
 | 
				
			||||||
@@ -1574,7 +1590,7 @@ SETTING DATA VIA SNMP
 | 
				
			|||||||
         $info->set_i_up_admin('down', $if_map{'FastEthernet0/0'}) 
 | 
					         $info->set_i_up_admin('down', $if_map{'FastEthernet0/0'}) 
 | 
				
			||||||
            or die "Couldn't disable the port. ",$info->error(1);
 | 
					            or die "Couldn't disable the port. ",$info->error(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOTE: You must be connected to your device with a "ReadWrite" community
 | 
					    NOTE: You must be connected to your device with a `ReadWrite' community
 | 
				
			||||||
    string in order for set operations to work.
 | 
					    string in order for set operations to work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data
 | 
					    NOTE: This will only set data listed in %FUNCS and %GLOBALS. For data
 | 
				
			||||||
@@ -1582,7 +1598,6 @@ SETTING DATA VIA SNMP
 | 
				
			|||||||
    subroutines will need to be added if they haven't been already.
 | 
					    subroutines will need to be added if they haven't been already.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Quiet Mode
 | 
					Quiet Mode
 | 
				
			||||||
 | 
					 | 
				
			||||||
    SNMP::Info will not chirp anything to STDOUT unless there is a serious
 | 
					    SNMP::Info will not chirp anything to STDOUT unless there is a serious
 | 
				
			||||||
    error (in which case it will probably die).
 | 
					    error (in which case it will probably die).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1597,7 +1612,6 @@ Quiet Mode
 | 
				
			|||||||
     my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
 | 
					     my $name = $info->name() or die "Couldn't get sysName!" . $name->error();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXTENDING SNMP::INFO
 | 
					EXTENDING SNMP::INFO
 | 
				
			||||||
 | 
					 | 
				
			||||||
    To support a new class (vendor or platform) of device, add a Perl
 | 
					    To support a new class (vendor or platform) of device, add a Perl
 | 
				
			||||||
    package with the data structures and methods listed below.
 | 
					    package with the data structures and methods listed below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1607,16 +1621,15 @@ EXTENDING SNMP::INFO
 | 
				
			|||||||
    to verify the implementation.
 | 
					    to verify the implementation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Gathering MIB data for SNMP::Info Developers
 | 
					  Gathering MIB data for SNMP::Info Developers
 | 
				
			||||||
 | 
					 | 
				
			||||||
    The preference is to open a feature request in the SourceForge project.
 | 
					    The preference is to open a feature request in the SourceForge project.
 | 
				
			||||||
    This allows all developers to have visibility into the request. Please
 | 
					    This allows all developers to have visibility into the request. Please
 | 
				
			||||||
    include pointers to the applicable platform MIBs. For development we
 | 
					    include pointers to the applicable platform MIBs. For development we
 | 
				
			||||||
    will need an "snmpwalk" of the device. There is a tool now included in
 | 
					    will need an `snmpwalk' of the device. There is a tool now included in
 | 
				
			||||||
    the SNMP::Info distribution to help with this task, although you'll most
 | 
					    the SNMP::Info distribution to help with this task, although you'll most
 | 
				
			||||||
    likely need to download the distribution from CPAN as it's included in
 | 
					    likely need to download the distribution from CPAN as it's included in
 | 
				
			||||||
    the ""t/util"" directory.
 | 
					    the "`contrib/util'" directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    The utility is named "make_snmpdata.pl". Run it with a command line
 | 
					    The utility is named `make_snmpdata.pl'. Run it with a command line
 | 
				
			||||||
    like:
 | 
					    like:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
     ./make_snmpdata.pl -c community -i -d device_ip \
 | 
					     ./make_snmpdata.pl -c community -i -d device_ip \
 | 
				
			||||||
@@ -1633,7 +1646,6 @@ EXTENDING SNMP::INFO
 | 
				
			|||||||
    ticket.
 | 
					    ticket.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Data Structures required in new Subclass
 | 
					  Data Structures required in new Subclass
 | 
				
			||||||
 | 
					 | 
				
			||||||
    A class inheriting this class must implement these data structures :
 | 
					    A class inheriting this class must implement these data structures :
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $INIT
 | 
					    $INIT
 | 
				
			||||||
@@ -1657,7 +1669,7 @@ EXTENDING SNMP::INFO
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    %FUNCS
 | 
					    %FUNCS
 | 
				
			||||||
        Contains a hash in the form ( method_name => SNMP MIB leaf name)
 | 
					        Contains a hash in the form ( method_name => SNMP MIB leaf name)
 | 
				
			||||||
        These are table entries, such as the "ifIndex"
 | 
					        These are table entries, such as the `ifIndex'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        To resolve MIB leaf name conflicts between private MIBs, you may
 | 
					        To resolve MIB leaf name conflicts between private MIBs, you may
 | 
				
			||||||
        prefix the leaf name with the MIB replacing each - (dash) and :
 | 
					        prefix the leaf name with the MIB replacing each - (dash) and :
 | 
				
			||||||
@@ -1690,7 +1702,6 @@ EXTENDING SNMP::INFO
 | 
				
			|||||||
         )
 | 
					         )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Sample Subclass
 | 
					  Sample Subclass
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Let's make a sample Layer 2 Device subclass. This class will inherit the
 | 
					    Let's make a sample Layer 2 Device subclass. This class will inherit the
 | 
				
			||||||
    Cisco Vlan module as an example.
 | 
					    Cisco Vlan module as an example.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1734,7 +1745,6 @@ EXTENDING SNMP::INFO
 | 
				
			|||||||
                 'super_hero_powers' => 'SuperHeroIfPowers'
 | 
					                 'super_hero_powers' => 'SuperHeroIfPowers'
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
     %MUNGE   = (%SNMP::Info::Layer2::MUNGE,
 | 
					     %MUNGE   = (%SNMP::Info::Layer2::MUNGE,
 | 
				
			||||||
                 %SNMP::Info::CiscoVTP::MUNGE,
 | 
					                 %SNMP::Info::CiscoVTP::MUNGE,
 | 
				
			||||||
                 'super_hero_powers' => \&munge_powers
 | 
					                 'super_hero_powers' => \&munge_powers
 | 
				
			||||||
@@ -1783,9 +1793,7 @@ EXTENDING SNMP::INFO
 | 
				
			|||||||
    of SNMP::Info.
 | 
					    of SNMP::Info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP::INFO INTERNALS
 | 
					SNMP::INFO INTERNALS
 | 
				
			||||||
 | 
					 | 
				
			||||||
  Object Namespace
 | 
					  Object Namespace
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Internal data is stored with bareword keys. For example $info->{debug}
 | 
					    Internal data is stored with bareword keys. For example $info->{debug}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SNMP Data is stored or marked cached with keys starting with an
 | 
					    SNMP Data is stored or marked cached with keys starting with an
 | 
				
			||||||
@@ -1795,7 +1803,6 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
    above.
 | 
					    above.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Package Globals
 | 
					  Package Globals
 | 
				
			||||||
 | 
					 | 
				
			||||||
    These set the default value for an object upon creation.
 | 
					    These set the default value for an object upon creation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $DEBUG
 | 
					    $DEBUG
 | 
				
			||||||
@@ -1813,11 +1820,10 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
        SNMP::Session. Or see method in new() to do it on an object scope.
 | 
					        SNMP::Session. Or see method in new() to do it on an object scope.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $REPEATERS
 | 
					    $REPEATERS
 | 
				
			||||||
        Default 20. MaxRepeaters for BULKWALK operations. See "perldoc SNMP"
 | 
					        Default 20. MaxRepeaters for BULKWALK operations. See `perldoc SNMP'
 | 
				
			||||||
        for more info. Can change by passing BulkRepeaters option in new()
 | 
					        for more info. Can change by passing BulkRepeaters option in new()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Data Munging Callback Subroutines
 | 
					  Data Munging Callback Subroutines
 | 
				
			||||||
 | 
					 | 
				
			||||||
    munge_speed()
 | 
					    munge_speed()
 | 
				
			||||||
        Makes human friendly speed ratings using %SPEED_MAP
 | 
					        Makes human friendly speed ratings using %SPEED_MAP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1847,6 +1853,7 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
                        '54000000'   => '54 Mbps',
 | 
					                        '54000000'   => '54 Mbps',
 | 
				
			||||||
                        '64000000'   => '64 Mbps',
 | 
					                        '64000000'   => '64 Mbps',
 | 
				
			||||||
                        '100000000'  => '100 Mbps',
 | 
					                        '100000000'  => '100 Mbps',
 | 
				
			||||||
 | 
					                        '200000000'  => '200 Mbps',
 | 
				
			||||||
                        '149760000'  => 'ATM on OC-3',
 | 
					                        '149760000'  => 'ATM on OC-3',
 | 
				
			||||||
                        '155000000'  => 'OC-3',
 | 
					                        '155000000'  => 'OC-3',
 | 
				
			||||||
                        '155519000'  => 'OC-3',
 | 
					                        '155519000'  => 'OC-3',
 | 
				
			||||||
@@ -1856,17 +1863,18 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
                        '622000000'  => 'OC-12',
 | 
					                        '622000000'  => 'OC-12',
 | 
				
			||||||
                        '622080000'  => 'OC-12',
 | 
					                        '622080000'  => 'OC-12',
 | 
				
			||||||
                        '1000000000' => '1.0 Gbps',
 | 
					                        '1000000000' => '1.0 Gbps',
 | 
				
			||||||
 | 
					                        '2000000000' => '2.0 Gbps',
 | 
				
			||||||
                        '2488000000' => 'OC-48',
 | 
					                        '2488000000' => 'OC-48',
 | 
				
			||||||
                     )
 | 
					                     )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Note: high speed interfaces (usually 1 Gbps or faster) have their
 | 
					        Note: high speed interfaces (usually 1 Gbps or faster) have their
 | 
				
			||||||
        link speed in "ifHighSpeed". i_speed() automatically determines
 | 
					        link speed in `ifHighSpeed'. i_speed() automatically determines
 | 
				
			||||||
        whether to use "ifSpeed" or "ifHighSpeed"; if the latter is used,
 | 
					        whether to use `ifSpeed' or `ifHighSpeed'; if the latter is used,
 | 
				
			||||||
        the value is munged by munge_highspeed(). SNMP::Info can return
 | 
					        the value is munged by munge_highspeed(). SNMP::Info can return
 | 
				
			||||||
        speeds up to terabit levels this way.
 | 
					        speeds up to terabit levels this way.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    munge_highspeed()
 | 
					    munge_highspeed()
 | 
				
			||||||
        Makes human friendly speed ratings for "ifHighSpeed"
 | 
					        Makes human friendly speed ratings for `ifHighSpeed'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    munge_ip()
 | 
					    munge_ip()
 | 
				
			||||||
        Takes a binary IP and makes it dotted ASCII
 | 
					        Takes a binary IP and makes it dotted ASCII
 | 
				
			||||||
@@ -1876,6 +1884,10 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
        ASCII hex string.
 | 
					        ASCII hex string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    munge_prio_mac()
 | 
					    munge_prio_mac()
 | 
				
			||||||
 | 
					        Takes an 2-byte octet stream (HEX-STRING) and returns a colon
 | 
				
			||||||
 | 
					        separated ASCII hex string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    munge_prio_port()
 | 
				
			||||||
        Takes an 8-byte octet stream (HEX-STRING) and returns a colon
 | 
					        Takes an 8-byte octet stream (HEX-STRING) and returns a colon
 | 
				
			||||||
        separated ASCII hex string.
 | 
					        separated ASCII hex string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1893,8 +1905,8 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
        See Math::BigInt for details.
 | 
					        See Math::BigInt for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    munge_i_up
 | 
					    munge_i_up
 | 
				
			||||||
        Net-SNMP tends to load "RFC1213-MIB" first, and so ignores the
 | 
					        Net-SNMP tends to load `RFC1213-MIB' first, and so ignores the
 | 
				
			||||||
        updated enumeration for "ifOperStatus" in "IF-MIB". This munge
 | 
					        updated enumeration for `ifOperStatus' in `IF-MIB'. This munge
 | 
				
			||||||
        handles the "newer" definitions for the enumeration in IF-MIB.
 | 
					        handles the "newer" definitions for the enumeration in IF-MIB.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        TODO: Get the precedence of MIBs and overriding of MIB data in
 | 
					        TODO: Get the precedence of MIBs and overriding of MIB data in
 | 
				
			||||||
@@ -1915,7 +1927,6 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
        Takes an OID and return the object name if the right MIB is loaded.
 | 
					        Takes an OID and return the object name if the right MIB is loaded.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Internally Used Functions
 | 
					  Internally Used Functions
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $info->init()
 | 
					    $info->init()
 | 
				
			||||||
        Used internally. Loads all entries in %MIBS.
 | 
					        Used internally. Loads all entries in %MIBS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2035,7 +2046,7 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
        a MIB Leaf node name contained within a table of a loaded MIB.
 | 
					        a MIB Leaf node name contained within a table of a loaded MIB.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Supports partial table fetches and single instance table fetches.
 | 
					        Supports partial table fetches and single instance table fetches.
 | 
				
			||||||
        See "Partial Table Fetches" in SNMP::Info.
 | 
					        See SNMP::Info.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        These methods return data as a reference to a hash.
 | 
					        These methods return data as a reference to a hash.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2053,7 +2064,7 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
    $info->_cache(attr, data)
 | 
					    $info->_cache(attr, data)
 | 
				
			||||||
        Cache retrieved data so that if it's asked for again, we use the
 | 
					        Cache retrieved data so that if it's asked for again, we use the
 | 
				
			||||||
        cache instead of going back to Net-SNMP. Data is cached inside the
 | 
					        cache instead of going back to Net-SNMP. Data is cached inside the
 | 
				
			||||||
        blessed hashref $self.
 | 
					        blessed hashref `$self'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Accepts the leaf and value (scalar, or hashref for a table). Does
 | 
					        Accepts the leaf and value (scalar, or hashref for a table). Does
 | 
				
			||||||
        not return anything useful.
 | 
					        not return anything useful.
 | 
				
			||||||
@@ -2093,7 +2104,6 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
        Returns undef if the method does not exist and can not be created.
 | 
					        Returns undef if the method does not exist and can not be created.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  AUTOLOAD
 | 
					  AUTOLOAD
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in
 | 
					    Each entry in either %FUNCS, %GLOBALS, or MIB Leaf node names present in
 | 
				
			||||||
    loaded MIBs are used by AUTOLOAD() to create dynamic methods. Generated
 | 
					    loaded MIBs are used by AUTOLOAD() to create dynamic methods. Generated
 | 
				
			||||||
    methods are inserted into the symbol table so that subsequent calls can
 | 
					    methods are inserted into the symbol table so that subsequent calls can
 | 
				
			||||||
@@ -2116,7 +2126,6 @@ SNMP::INFO INTERNALS
 | 
				
			|||||||
    subclass.
 | 
					    subclass.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPYRIGHT AND LICENSE
 | 
					COPYRIGHT AND LICENSE
 | 
				
			||||||
 | 
					 | 
				
			||||||
    Changes from SNMP::Info Version 0.7 and on are: Copyright (c) 2003-2010
 | 
					    Changes from SNMP::Info Version 0.7 and on are: Copyright (c) 2003-2010
 | 
				
			||||||
    Max Baker and SNMP::Info Developers All rights reserved.
 | 
					    Max Baker and SNMP::Info Developers All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,6 @@ Coding Guidelines:
 | 
				
			|||||||
    - tab-width of 4, no tab characters
 | 
					    - tab-width of 4, no tab characters
 | 
				
			||||||
    - keep POD documentation up-to-date
 | 
					    - keep POD documentation up-to-date
 | 
				
			||||||
    - always update ChangeLog before committing
 | 
					    - always update ChangeLog before committing
 | 
				
			||||||
    - always update DeviceMatrix.txt before committing
 | 
					 | 
				
			||||||
    - check-in required mibs to netdisco-mibs and release new package if needed
 | 
					    - check-in required mibs to netdisco-mibs and release new package if needed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Release and Testing Instructions: 
 | 
					Release and Testing Instructions: 
 | 
				
			||||||
@@ -3,9 +3,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use File::Glob qw/bsd_glob/;
 | 
					use File::Glob qw/bsd_glob/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my @pms = glob_rec("../Info");
 | 
					my @pms = glob_rec("../../lib");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$new_version = shift @ARGV || '3.01';
 | 
					$new_version = shift @ARGV || die "missing new version\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foreach my $p (@pms) {
 | 
					foreach my $p (@pms) {
 | 
				
			||||||
    print "$p\n";
 | 
					    print "$p\n";
 | 
				
			||||||
@@ -16,6 +16,7 @@ foreach my $p (@pms) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    while (<O>) {
 | 
					    while (<O>) {
 | 
				
			||||||
        s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/;
 | 
					        s/^\s*\$VERSION\s+=\s*'[^']+'\s*;/\$VERSION = '$new_version';/;
 | 
				
			||||||
 | 
					        s/^SNMP::Info - Version [\d.]+$/SNMP::Info - Version $new_version/;
 | 
				
			||||||
        print P;
 | 
					        print P;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,7 +24,7 @@ use vars
 | 
				
			|||||||
    qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
 | 
					    qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
 | 
				
			||||||
    $NOSUCH $BIGINT $REPEATERS/;
 | 
					    $NOSUCH $BIGINT $REPEATERS/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 NAME
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=head1 VERSION
 | 
					=head1 VERSION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP::Info - Version 3.20
 | 
					SNMP::Info - Version 3.44
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 AUTHOR
 | 
					=head1 AUTHOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -47,7 +47,9 @@ by Max Baker.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=head1 DEVICES SUPPORTED
 | 
					=head1 DEVICES SUPPORTED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more details.
 | 
					There are now generic classes for most types of device and so the authors
 | 
				
			||||||
 | 
					recommend loading SNMP::Info with AutoSpecify, and then reporting to the mail
 | 
				
			||||||
 | 
					list any missing functionality (such as neighbor discovery tables).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 SYNOPSIS
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -168,7 +170,7 @@ install by hand.
 | 
				
			|||||||
SNMP::Info operates on textual descriptors found in MIBs.
 | 
					SNMP::Info operates on textual descriptors found in MIBs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you are using SNMP::Info separate from Netdisco, 
 | 
					If you are using SNMP::Info separate from Netdisco, 
 | 
				
			||||||
download the Netdisco MIB package at L<http://sourceforge.net/project/showfiles.php?group_id=80033&package_id=135517>
 | 
					download the Netdisco MIB package at L<http://sourceforge.net/projects/netdisco/files/netdisco-mibs/latest-snapshot/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Make sure that your snmp.conf is updated to point to your MIB directory
 | 
					Make sure that your snmp.conf is updated to point to your MIB directory
 | 
				
			||||||
and that the MIBs are world-readable.
 | 
					and that the MIBs are world-readable.
 | 
				
			||||||
@@ -395,6 +397,12 @@ F<MAU-MIB> (RFC2668).  Some Layer2 devices use this for extended Ethernet
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::MAU> for details.
 | 
					See documentation in L<SNMP::Info::MAU> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::MRO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Method resolution introspection for SNMP::Info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::MRO> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::NortelStack
 | 
					=item SNMP::Info::NortelStack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
 | 
					F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
 | 
				
			||||||
@@ -493,6 +501,12 @@ SNMP::Info::Layer2::3Com - SNMP Interface to L2 3Com Switches
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer2::3Com> for details.
 | 
					See documentation in L<SNMP::Info::Layer2::3Com> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer2::Adtran
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Adtran devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer2::Adtran> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer2::Airespace
 | 
					=item SNMP::Info::Layer2::Airespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Subclass for Cisco (Airespace) wireless controllers.
 | 
					Subclass for Cisco (Airespace) wireless controllers.
 | 
				
			||||||
@@ -626,7 +640,7 @@ See documentation in L<SNMP::Info::Layer2::Trapeze> for details.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer2::Ubiquiti
 | 
					=item SNMP::Info::Layer2::Ubiquiti
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP Interface to Ubiquiti Access Points
 | 
					SNMP Interface to Ubiquiti Access Points and other devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer2::Ubiquiti> for details.
 | 
					See documentation in L<SNMP::Info::Layer2::Ubiquiti> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -716,6 +730,12 @@ This class covers Catalyst 6500s in native mode, hybrid mode.  Catalyst
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3::C6500> for details.
 | 
					See documentation in L<SNMP::Info::Layer3::C6500> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::CheckPoint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for CheckPoint devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::CheckPoint> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer3::Cisco
 | 
					=item SNMP::Info::Layer3::Cisco
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is a simple wrapper around layer 3 for IOS devices and the base layer 3
 | 
					This is a simple wrapper around layer 3 for IOS devices and the base layer 3
 | 
				
			||||||
@@ -746,6 +766,12 @@ Subclass for Avaya/Nortel Contivity/VPN Routers.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3::Contivity> for details.
 | 
					See documentation in L<SNMP::Info::Layer3::Contivity> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::DLink
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for DLink devices.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::DLink> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer3::Dell
 | 
					=item SNMP::Info::Layer3::Dell
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Subclass for Dell PowerConnect switches. D-Link, the IBM BladeCenter
 | 
					Subclass for Dell PowerConnect switches. D-Link, the IBM BladeCenter
 | 
				
			||||||
@@ -778,6 +804,12 @@ Subclass for Force10 devices.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3::Force10> for details.
 | 
					See documentation in L<SNMP::Info::Layer3::Force10> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::Fortinet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Fortinet devices.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::Fortinet> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer3::Foundry
 | 
					=item SNMP::Info::Layer3::Foundry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Subclass for Brocade (Foundry) Network devices.
 | 
					Subclass for Brocade (Foundry) Network devices.
 | 
				
			||||||
@@ -797,6 +829,12 @@ Original Equipment Manufacturer (OEM) such as the HP ProCurve 9300 and 6300 seri
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3::HP9300> for details.
 | 
					See documentation in L<SNMP::Info::Layer3::HP9300> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::Huawei
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP Interface to Huawei Layer 3 switches and routers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::Huawei> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer3::IBMGbTor
 | 
					=item SNMP::Info::Layer3::IBMGbTor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP Interface to IBM Rackswitch (formerly Blade Network Technologies)
 | 
					SNMP Interface to IBM Rackswitch (formerly Blade Network Technologies)
 | 
				
			||||||
@@ -858,6 +896,12 @@ Subclass for PacketFront DRG series CPE.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3::PacketFront> for details.
 | 
					See documentation in L<SNMP::Info::Layer3::PacketFront> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::PaloAlto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Palo Alto firewalls.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::PaloAlto> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer3::Passport
 | 
					=item SNMP::Info::Layer3::Passport
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000 series,
 | 
					Subclass for Avaya/Nortel Ethernet Routing Switch/Passport 8000 series,
 | 
				
			||||||
@@ -905,6 +949,18 @@ Alcatel-Lucent SR Class.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3::Timetra> for details.
 | 
					See documentation in L<SNMP::Info::Layer3::Timetra> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::VyOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for VyOS routers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::VyOS> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3::VMware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for VMware ESXi hosts.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3::VMware> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
@@ -925,6 +981,12 @@ SNMP Interface to APC UPS devices
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer7::APC> for details.
 | 
					See documentation in L<SNMP::Info::Layer7::APC> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer7::CiscoIPS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP Interface to Cisco IPS devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer7::Cisco IPS> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer7::Netscaler
 | 
					=item SNMP::Info::Layer7::Netscaler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SNMP Interface to Citrix Netscaler appliances
 | 
					SNMP Interface to Citrix Netscaler appliances
 | 
				
			||||||
@@ -1222,16 +1284,13 @@ sub new {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Table function store
 | 
					 | 
				
			||||||
    my $store = {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Save Args for later
 | 
					    # Save Args for later
 | 
				
			||||||
    $new_obj->{store}     = $store;
 | 
					    $new_obj->{store}     ||= {};
 | 
				
			||||||
    $new_obj->{sess}      = $sess;
 | 
					    $new_obj->{sess}      = $sess;
 | 
				
			||||||
    $new_obj->{args}      = \%args;
 | 
					    $new_obj->{args}      = \%args;
 | 
				
			||||||
    $new_obj->{snmp_ver}  = $args{Version} || 2;
 | 
					    $new_obj->{snmp_ver}  = $sess->{Version}   || $args{Version}   || 2;
 | 
				
			||||||
    $new_obj->{snmp_comm} = $args{Community} || 'public';
 | 
					    $new_obj->{snmp_comm} = $sess->{Community} || $args{Community} || 'public';
 | 
				
			||||||
    $new_obj->{snmp_user} = $args{SecName} || 'initial';
 | 
					    $new_obj->{snmp_user} = $sess->{SecName}   || $args{SecName}   || 'initial';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $auto_specific ? $new_obj->specify() : $new_obj;
 | 
					    return $auto_specific ? $new_obj->specify() : $new_obj;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1295,7 +1354,7 @@ sub update {
 | 
				
			|||||||
=head2 Data is Cached
 | 
					=head2 Data is Cached
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Methods and subroutines requesting data from a device will only load the data
 | 
					Methods and subroutines requesting data from a device will only load the data
 | 
				
			||||||
once, and then return cached versions of that data. 
 | 
					once, and then return cached versions of that data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Run $info->load_METHOD() where method is something like 'i_name' to reload
 | 
					Run $info->load_METHOD() where method is something like 'i_name' to reload
 | 
				
			||||||
data from a method.
 | 
					data from a method.
 | 
				
			||||||
@@ -1303,7 +1362,7 @@ data from a method.
 | 
				
			|||||||
Run $info->clear_cache() to clear the cache to allow reload of both globals
 | 
					Run $info->clear_cache() to clear the cache to allow reload of both globals
 | 
				
			||||||
and table methods.
 | 
					and table methods.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The cache can be retreved or set using the $info->cache() method. This works
 | 
					The cache can be retrieved or set using the $info->cache() method. This works
 | 
				
			||||||
together with the C<Offline> option.
 | 
					together with the C<Offline> option.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Object Scalar Methods
 | 
					=head2 Object Scalar Methods
 | 
				
			||||||
@@ -1448,9 +1507,6 @@ SNMP::Info::Layer3 subclasses.
 | 
				
			|||||||
If the device still can be connected to via SNMP::Info, then 
 | 
					If the device still can be connected to via SNMP::Info, then 
 | 
				
			||||||
SNMP::Info is returned.  
 | 
					SNMP::Info is returned.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See L<http://netdisco.org/doc/DeviceMatrix.html> or L<DeviceMatrix.txt> for more details
 | 
					 | 
				
			||||||
about device support, or view C<device_type()> in F<Info.pm>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=cut
 | 
					=cut
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub device_type {
 | 
					sub device_type {
 | 
				
			||||||
@@ -1486,15 +1542,18 @@ sub device_type {
 | 
				
			|||||||
        42   => 'SNMP::Info::Layer3::Sun',
 | 
					        42   => 'SNMP::Info::Layer3::Sun',
 | 
				
			||||||
        43   => 'SNMP::Info::Layer2::3Com',
 | 
					        43   => 'SNMP::Info::Layer2::3Com',
 | 
				
			||||||
        45   => 'SNMP::Info::Layer2::Baystack',
 | 
					        45   => 'SNMP::Info::Layer2::Baystack',
 | 
				
			||||||
        171  => 'SNMP::Info::Layer3::Dell',
 | 
					        171  => 'SNMP::Info::Layer3::DLink',
 | 
				
			||||||
        244  => 'SNMP::Info::Layer3::Lantronix',
 | 
					        244  => 'SNMP::Info::Layer3::Lantronix',
 | 
				
			||||||
        311  => 'SNMP::Info::Layer3::Microsoft',
 | 
					        311  => 'SNMP::Info::Layer3::Microsoft',
 | 
				
			||||||
 | 
					        664   => 'SNMP::Info::Layer2::Adtran',
 | 
				
			||||||
        674  => 'SNMP::Info::Layer3::Dell',
 | 
					        674  => 'SNMP::Info::Layer3::Dell',
 | 
				
			||||||
        1872 => 'SNMP::Info::Layer3::AlteonAD',
 | 
					        1872 => 'SNMP::Info::Layer3::AlteonAD',
 | 
				
			||||||
        1916 => 'SNMP::Info::Layer3::Extreme',
 | 
					        1916 => 'SNMP::Info::Layer3::Extreme',
 | 
				
			||||||
        1991 => 'SNMP::Info::Layer3::Foundry',
 | 
					        1991 => 'SNMP::Info::Layer3::Foundry',
 | 
				
			||||||
 | 
					        2011 => 'SNMP::Info::Layer3::Huawei',
 | 
				
			||||||
        2021 => 'SNMP::Info::Layer3::NetSNMP',
 | 
					        2021 => 'SNMP::Info::Layer3::NetSNMP',
 | 
				
			||||||
        2272 => 'SNMP::Info::Layer3::Passport',
 | 
					        2272 => 'SNMP::Info::Layer3::Passport',
 | 
				
			||||||
 | 
					        2620 => 'SNMP::Info::Layer3::CheckPoint',
 | 
				
			||||||
        2636 => 'SNMP::Info::Layer3::Juniper',
 | 
					        2636 => 'SNMP::Info::Layer3::Juniper',
 | 
				
			||||||
        2925 => 'SNMP::Info::Layer1::Cyclades',
 | 
					        2925 => 'SNMP::Info::Layer1::Cyclades',
 | 
				
			||||||
        3076 => 'SNMP::Info::Layer3::Altiga',
 | 
					        3076 => 'SNMP::Info::Layer3::Altiga',
 | 
				
			||||||
@@ -1506,19 +1565,25 @@ sub device_type {
 | 
				
			|||||||
        6027 => 'SNMP::Info::Layer3::Force10',
 | 
					        6027 => 'SNMP::Info::Layer3::Force10',
 | 
				
			||||||
        6486 => 'SNMP::Info::Layer3::AlcatelLucent',
 | 
					        6486 => 'SNMP::Info::Layer3::AlcatelLucent',
 | 
				
			||||||
        6527 => 'SNMP::Info::Layer3::Timetra',
 | 
					        6527 => 'SNMP::Info::Layer3::Timetra',
 | 
				
			||||||
 | 
					        6876 => 'SNMP::Info::Layer3::VMware',
 | 
				
			||||||
        8072 => 'SNMP::Info::Layer3::NetSNMP',
 | 
					        8072 => 'SNMP::Info::Layer3::NetSNMP',
 | 
				
			||||||
        9303 => 'SNMP::Info::Layer3::PacketFront',
 | 
					        9303 => 'SNMP::Info::Layer3::PacketFront',
 | 
				
			||||||
        10002 => 'SNMP::Info::Layer2::Ubiquiti',
 | 
					        10002 => 'SNMP::Info::Layer2::Ubiquiti',
 | 
				
			||||||
        12325 => 'SNMP::Info::Layer3::Pf',
 | 
					        12325 => 'SNMP::Info::Layer3::Pf',
 | 
				
			||||||
 | 
					        12356 => 'SNMP::Info::Layer3::Fortinet',
 | 
				
			||||||
        14179 => 'SNMP::Info::Layer2::Airespace',
 | 
					        14179 => 'SNMP::Info::Layer2::Airespace',
 | 
				
			||||||
        14525 => 'SNMP::Info::Layer2::Trapeze',
 | 
					        14525 => 'SNMP::Info::Layer2::Trapeze',
 | 
				
			||||||
        14823 => 'SNMP::Info::Layer3::Aruba',
 | 
					        14823 => 'SNMP::Info::Layer3::Aruba',
 | 
				
			||||||
        14988 => 'SNMP::Info::Layer3::Mikrotik',
 | 
					        14988 => 'SNMP::Info::Layer3::Mikrotik',
 | 
				
			||||||
        17163 => 'SNMP::Info::Layer3::Steelhead',
 | 
					        17163 => 'SNMP::Info::Layer3::Steelhead',
 | 
				
			||||||
        25506 => 'SNMP::Info::Layer3::H3C',
 | 
					        25506 => 'SNMP::Info::Layer3::H3C',
 | 
				
			||||||
 | 
					        25461 => 'SNMP::Info::Layer3::PaloAlto',
 | 
				
			||||||
        26543 => 'SNMP::Info::Layer3::IBMGbTor',
 | 
					        26543 => 'SNMP::Info::Layer3::IBMGbTor',
 | 
				
			||||||
        30065 => 'SNMP::Info::Layer3::Arista',
 | 
					        30065 => 'SNMP::Info::Layer3::Arista',
 | 
				
			||||||
        35098 => 'SNMP::Info::Layer3::Pica8',
 | 
					        35098 => 'SNMP::Info::Layer3::Pica8',
 | 
				
			||||||
 | 
					        41112 => 'SNMP::Info::Layer2::Ubiquiti',
 | 
				
			||||||
 | 
					        4413 => 'SNMP::Info::Layer2::Ubiquiti',
 | 
				
			||||||
 | 
					        30803 => 'SNMP::Info::Layer3::VyOS',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my %l2sysoidmap = (
 | 
					    my %l2sysoidmap = (
 | 
				
			||||||
@@ -1526,12 +1591,14 @@ sub device_type {
 | 
				
			|||||||
        11    => 'SNMP::Info::Layer2::HP',
 | 
					        11    => 'SNMP::Info::Layer2::HP',
 | 
				
			||||||
        43    => 'SNMP::Info::Layer2::3Com',
 | 
					        43    => 'SNMP::Info::Layer2::3Com',
 | 
				
			||||||
        45    => 'SNMP::Info::Layer2::Baystack',
 | 
					        45    => 'SNMP::Info::Layer2::Baystack',
 | 
				
			||||||
        171   => 'SNMP::Info::Layer3::Dell',
 | 
					        171   => 'SNMP::Info::Layer3::DLink',
 | 
				
			||||||
        207   => 'SNMP::Info::Layer2::Allied',
 | 
					        207   => 'SNMP::Info::Layer2::Allied',
 | 
				
			||||||
 | 
					        664   => 'SNMP::Info::Layer2::Adtran',
 | 
				
			||||||
        674   => 'SNMP::Info::Layer3::Dell',
 | 
					        674   => 'SNMP::Info::Layer3::Dell',
 | 
				
			||||||
        1872  => 'SNMP::Info::Layer3::AlteonAD',
 | 
					        1872  => 'SNMP::Info::Layer3::AlteonAD',
 | 
				
			||||||
        1916  => 'SNMP::Info::Layer3::Extreme',
 | 
					        1916  => 'SNMP::Info::Layer3::Extreme',
 | 
				
			||||||
        1991  => 'SNMP::Info::Layer3::Foundry',
 | 
					        1991  => 'SNMP::Info::Layer3::Foundry',
 | 
				
			||||||
 | 
					        2011  => 'SNMP::Info::Layer3::Huawei',
 | 
				
			||||||
        2272  => 'SNMP::Info::Layer3::Passport',
 | 
					        2272  => 'SNMP::Info::Layer3::Passport',
 | 
				
			||||||
        2925  => 'SNMP::Info::Layer1::Cyclades',
 | 
					        2925  => 'SNMP::Info::Layer1::Cyclades',
 | 
				
			||||||
        3224  => 'SNMP::Info::Layer3::Netscreen',
 | 
					        3224  => 'SNMP::Info::Layer3::Netscreen',
 | 
				
			||||||
@@ -1539,6 +1606,7 @@ sub device_type {
 | 
				
			|||||||
        4526  => 'SNMP::Info::Layer2::Netgear',
 | 
					        4526  => 'SNMP::Info::Layer2::Netgear',
 | 
				
			||||||
        5624  => 'SNMP::Info::Layer3::Enterasys',
 | 
					        5624  => 'SNMP::Info::Layer3::Enterasys',
 | 
				
			||||||
        6486  => 'SNMP::Info::Layer3::AlcatelLucent',
 | 
					        6486  => 'SNMP::Info::Layer3::AlcatelLucent',
 | 
				
			||||||
 | 
					        9303  => 'SNMP::Info::Layer3::PacketFront',
 | 
				
			||||||
        11898 => 'SNMP::Info::Layer2::Orinoco',
 | 
					        11898 => 'SNMP::Info::Layer2::Orinoco',
 | 
				
			||||||
        14179 => 'SNMP::Info::Layer2::Airespace',
 | 
					        14179 => 'SNMP::Info::Layer2::Airespace',
 | 
				
			||||||
        14525 => 'SNMP::Info::Layer2::Trapeze',
 | 
					        14525 => 'SNMP::Info::Layer2::Trapeze',
 | 
				
			||||||
@@ -1586,6 +1654,9 @@ sub device_type {
 | 
				
			|||||||
        $objtype = 'SNMP::Info::Layer3::Aironet'
 | 
					        $objtype = 'SNMP::Info::Layer3::Aironet'
 | 
				
			||||||
            if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ );
 | 
					            if ( $desc =~ /Aironet/ and $desc =~ /\D(AP4800)\D/ );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# Override voice gateway device (VG350) showing up as Aironet
 | 
				
			||||||
 | 
					        $objtype = 'SNMP::Info::Layer3::Cisco' if $desc =~ /VG350/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Cat6k with older SUPs (hybrid CatOS/IOS?)
 | 
					        # Cat6k with older SUPs (hybrid CatOS/IOS?)
 | 
				
			||||||
        $objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
 | 
					        $objtype = 'SNMP::Info::Layer3::C6500' if $desc =~ /(c6sup2|c6sup1)/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1635,7 +1706,9 @@ sub device_type {
 | 
				
			|||||||
            =~ /^(BayStack|Ethernet\s+Routing\s+Switch)\s[2345](\d){2,3}/i );
 | 
					            =~ /^(BayStack|Ethernet\s+Routing\s+Switch)\s[2345](\d){2,3}/i );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Nortel Contivity
 | 
					        # Nortel Contivity
 | 
				
			||||||
        $objtype = 'SNMP::Info::Layer3::Contivity' if $desc =~ /(\bCES\b|\bNVR\sV\d)/;
 | 
					        $objtype = 'SNMP::Info::Layer3::Contivity'
 | 
				
			||||||
 | 
					          if $desc =~ /(\bCES\b|\bNVR\sV\d)/
 | 
				
			||||||
 | 
					              and (!defined $id or !defined $l3sysoidmap{$id});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # SonicWALL
 | 
					        # SonicWALL
 | 
				
			||||||
        $objtype = 'SNMP::Info::Layer3::SonicWALL' if $desc =~ /SonicWALL/i;
 | 
					        $objtype = 'SNMP::Info::Layer3::SonicWALL' if $desc =~ /SonicWALL/i;
 | 
				
			||||||
@@ -1653,6 +1726,11 @@ sub device_type {
 | 
				
			|||||||
        $objtype = 'SNMP::Info::Layer3::CiscoFWSM'
 | 
					        $objtype = 'SNMP::Info::Layer3::CiscoFWSM'
 | 
				
			||||||
            if ( $desc =~ /Cisco Firewall Services Module/i );
 | 
					            if ( $desc =~ /Cisco Firewall Services Module/i );
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        #   Cisco Small Business (300 500) series override
 | 
				
			||||||
 | 
					        #   This is for enterprises(1).cisco(9).otherEnterprises(6).ciscosb(1)
 | 
				
			||||||
 | 
					        $objtype = 'SNMP::Info::Layer2::CiscoSB'
 | 
				
			||||||
 | 
					            if ( $soid =~ /^\.?1\.3\.6\.1\.4\.1\.9\.6\.1/ );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Avaya Secure Router
 | 
					        # Avaya Secure Router
 | 
				
			||||||
        $objtype = 'SNMP::Info::Layer3::Tasman'
 | 
					        $objtype = 'SNMP::Info::Layer3::Tasman'
 | 
				
			||||||
            if ( $desc =~ /^(avaya|nortel)\s+(SR|secure\srouter)\s+\d{4}/i );
 | 
					            if ( $desc =~ /^(avaya|nortel)\s+(SR|secure\srouter)\s+\d{4}/i );
 | 
				
			||||||
@@ -1665,7 +1743,7 @@ sub device_type {
 | 
				
			|||||||
        # Starting with IOS 15, Aironet reports sysServices 6, even though
 | 
					        # Starting with IOS 15, Aironet reports sysServices 6, even though
 | 
				
			||||||
        # it still is the same layer2 access point.
 | 
					        # it still is the same layer2 access point.
 | 
				
			||||||
        $objtype = 'SNMP::Info::Layer2::Aironet'
 | 
					        $objtype = 'SNMP::Info::Layer2::Aironet'
 | 
				
			||||||
            if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250)\b/
 | 
					            if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250|C2700|C3700)\b/
 | 
				
			||||||
            and $desc =~ /\bIOS\b/ );
 | 
					            and $desc =~ /\bIOS\b/ );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Airespace (WLC) Module
 | 
					        # Airespace (WLC) Module
 | 
				
			||||||
@@ -1876,6 +1954,10 @@ sub device_type {
 | 
				
			|||||||
        $objtype = 'SNMP::Info::Layer2::NWSS2300'    
 | 
					        $objtype = 'SNMP::Info::Layer2::NWSS2300'    
 | 
				
			||||||
            if (
 | 
					            if (
 | 
				
			||||||
            $desc =~ /^(Nortel\s)??Wireless\sSecurity\sSwitch\s23[568][012]\b/);
 | 
					            $desc =~ /^(Nortel\s)??Wireless\sSecurity\sSwitch\s23[568][012]\b/);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        # Cisco IPS, older version which doesn't report layer 3 functionality
 | 
				
			||||||
 | 
					        $objtype = 'SNMP::Info::Layer7::CiscoIPS'
 | 
				
			||||||
 | 
					            if ( $soid =~ /\.1\.3\.6\.1\.4\.1\.9\.1\.1545/i );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Generic device classification based upon sysObjectID
 | 
					        # Generic device classification based upon sysObjectID
 | 
				
			||||||
        if ( defined($id) and $objtype eq 'SNMP::Info') {
 | 
					        if ( defined($id) and $objtype eq 'SNMP::Info') {
 | 
				
			||||||
@@ -2900,7 +2982,7 @@ allows all developers to have visibility into the request.  Please include
 | 
				
			|||||||
pointers to the applicable platform MIBs.  For development we will need an
 | 
					pointers to the applicable platform MIBs.  For development we will need an
 | 
				
			||||||
C<snmpwalk> of the device.  There is a tool now included in the SNMP::Info
 | 
					C<snmpwalk> of the device.  There is a tool now included in the SNMP::Info
 | 
				
			||||||
distribution to help with this task, although you'll most likely need to
 | 
					distribution to help with this task, although you'll most likely need to
 | 
				
			||||||
download the distribution from CPAN as it's included in the "C<t/util>"
 | 
					download the distribution from CPAN as it's included in the "C<contrib/util>"
 | 
				
			||||||
directory.
 | 
					directory.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The utility is named C<make_snmpdata.pl>. Run it with a command line like:
 | 
					The utility is named C<make_snmpdata.pl>. Run it with a command line like:
 | 
				
			||||||
@@ -3281,6 +3363,7 @@ Makes human friendly speed ratings using %SPEED_MAP
 | 
				
			|||||||
                '54000000'   => '54 Mbps',
 | 
					                '54000000'   => '54 Mbps',
 | 
				
			||||||
                '64000000'   => '64 Mbps',
 | 
					                '64000000'   => '64 Mbps',
 | 
				
			||||||
                '100000000'  => '100 Mbps',
 | 
					                '100000000'  => '100 Mbps',
 | 
				
			||||||
 | 
					                '200000000'  => '200 Mbps',
 | 
				
			||||||
                '149760000'  => 'ATM on OC-3',
 | 
					                '149760000'  => 'ATM on OC-3',
 | 
				
			||||||
                '155000000'  => 'OC-3',
 | 
					                '155000000'  => 'OC-3',
 | 
				
			||||||
                '155519000'  => 'OC-3',
 | 
					                '155519000'  => 'OC-3',
 | 
				
			||||||
@@ -3290,6 +3373,7 @@ Makes human friendly speed ratings using %SPEED_MAP
 | 
				
			|||||||
                '622000000'  => 'OC-12',
 | 
					                '622000000'  => 'OC-12',
 | 
				
			||||||
                '622080000'  => 'OC-12',
 | 
					                '622080000'  => 'OC-12',
 | 
				
			||||||
                '1000000000' => '1.0 Gbps',
 | 
					                '1000000000' => '1.0 Gbps',
 | 
				
			||||||
 | 
					                '2000000000' => '2.0 Gbps',
 | 
				
			||||||
                '2488000000' => 'OC-48',
 | 
					                '2488000000' => 'OC-48',
 | 
				
			||||||
             )
 | 
					             )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3326,6 +3410,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
 | 
				
			|||||||
    '54000000'   => '54 Mbps',
 | 
					    '54000000'   => '54 Mbps',
 | 
				
			||||||
    '64000000'   => '64 Mbps',
 | 
					    '64000000'   => '64 Mbps',
 | 
				
			||||||
    '100000000'  => '100 Mbps',
 | 
					    '100000000'  => '100 Mbps',
 | 
				
			||||||
 | 
					    '200000000'  => '200 Mbps',
 | 
				
			||||||
    '149760000'  => 'ATM on OC-3',
 | 
					    '149760000'  => 'ATM on OC-3',
 | 
				
			||||||
    '155000000'  => 'OC-3',
 | 
					    '155000000'  => 'OC-3',
 | 
				
			||||||
    '155519000'  => 'OC-3',
 | 
					    '155519000'  => 'OC-3',
 | 
				
			||||||
@@ -3335,6 +3420,7 @@ munge_highspeed(). SNMP::Info can return speeds up to terabit levels this way.
 | 
				
			|||||||
    '622000000'  => 'OC-12',
 | 
					    '622000000'  => 'OC-12',
 | 
				
			||||||
    '622080000'  => 'OC-12',
 | 
					    '622080000'  => 'OC-12',
 | 
				
			||||||
    '1000000000' => '1.0 Gbps',
 | 
					    '1000000000' => '1.0 Gbps',
 | 
				
			||||||
 | 
					    '2000000000' => '2.0 Gbps',
 | 
				
			||||||
    '2488000000' => 'OC-48',
 | 
					    '2488000000' => 'OC-48',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3404,7 +3490,7 @@ sub munge_mac {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item munge_prio_mac()
 | 
					=item munge_prio_mac()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
 | 
					Takes an 2-byte octet stream (HEX-STRING) and returns a colon separated ASCII
 | 
				
			||||||
hex string.
 | 
					hex string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=cut
 | 
					=cut
 | 
				
			||||||
@@ -3418,6 +3504,22 @@ sub munge_prio_mac {
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item munge_prio_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
 | 
				
			||||||
 | 
					hex string.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub munge_prio_port {
 | 
				
			||||||
 | 
					    my $mac = shift;
 | 
				
			||||||
 | 
					    return unless defined $mac;
 | 
				
			||||||
 | 
					    return unless length $mac;
 | 
				
			||||||
 | 
					    $mac = join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
 | 
				
			||||||
 | 
					    return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){1}[0-9A-F][0-9A-F]$/i;
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item munge_octet2hex()
 | 
					=item munge_octet2hex()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Takes a binary octet stream and returns an ASCII hex string
 | 
					Takes a binary octet stream and returns an ASCII hex string
 | 
				
			||||||
@@ -3593,7 +3695,8 @@ sub init {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    foreach my $d (@$mibdirs) {
 | 
					    foreach my $d (@$mibdirs) {
 | 
				
			||||||
        next unless -d $d;
 | 
					        next unless -d $d;
 | 
				
			||||||
        print "SNMP::Info::init() - Adding new mibdir:$d\n" if $self->debug();
 | 
					        print "SNMP::Info::init() - Adding new mibdir:$d\n"
 | 
				
			||||||
 | 
					          if $self->debug() > 1;
 | 
				
			||||||
        SNMP::addMibDirs($d);
 | 
					        SNMP::addMibDirs($d);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3753,6 +3856,7 @@ These methods return data as a scalar.
 | 
				
			|||||||
sub _global {
 | 
					sub _global {
 | 
				
			||||||
    my $method = shift;
 | 
					    my $method = shift;
 | 
				
			||||||
    my $oid    = shift;
 | 
					    my $oid    = shift;
 | 
				
			||||||
 | 
					    return sub {} if $method eq 'CARP_TRACE';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return sub {
 | 
					    return sub {
 | 
				
			||||||
        my $self = shift;
 | 
					        my $self = shift;
 | 
				
			||||||
@@ -3770,7 +3874,7 @@ sub _global {
 | 
				
			|||||||
        # Return cached data unless loading
 | 
					        # Return cached data unless loading
 | 
				
			||||||
        # We now store in raw format so munge before returning
 | 
					        # We now store in raw format so munge before returning
 | 
				
			||||||
        # unless expecting raw data
 | 
					        # unless expecting raw data
 | 
				
			||||||
        if ( defined $self->{"_$attr"} && !$load ) {
 | 
					        if ( exists $self->{"_$attr"} && !$load ) {
 | 
				
			||||||
            my $val = $self->{"_$attr"};
 | 
					            my $val = $self->{"_$attr"};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if ( !$raw ) {
 | 
					            if ( !$raw ) {
 | 
				
			||||||
@@ -4480,6 +4584,11 @@ sub _validate_autoload_method {
 | 
				
			|||||||
        $leaf_name =~ s/_/-/g;
 | 
					        $leaf_name =~ s/_/-/g;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # skip if offline
 | 
				
			||||||
 | 
					    if ( $self->{Offline} ) {
 | 
				
			||||||
 | 
					        return [1,(exists $self->{store}->{$method} ? 1: 0)];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Translate MIB leaf node name to OID
 | 
					    # Translate MIB leaf node name to OID
 | 
				
			||||||
    my $oid = SNMP::translateObj($leaf_name);
 | 
					    my $oid = SNMP::translateObj($leaf_name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -4516,7 +4625,8 @@ sub _validate_autoload_method {
 | 
				
			|||||||
    my $table_leaf = 0;
 | 
					    my $table_leaf = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( !$globals->{$attr}
 | 
					    if ( !$globals->{$attr}
 | 
				
			||||||
        && ( defined $indexes && scalar( @{$indexes} ) > 0 ) )
 | 
					        && ( ( defined $indexes && scalar( @{$indexes} ) > 0 )
 | 
				
			||||||
 | 
					            || $funcs->{$attr} ))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $table_leaf = 1;
 | 
					        $table_leaf = 1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -4628,7 +4738,7 @@ sub AUTOLOAD {
 | 
				
			|||||||
    # Typos in function calls in SNMP::Info subclasses turn into
 | 
					    # Typos in function calls in SNMP::Info subclasses turn into
 | 
				
			||||||
    # AUTOLOAD requests for non-methods.  While this is deprecated,
 | 
					    # AUTOLOAD requests for non-methods.  While this is deprecated,
 | 
				
			||||||
    # we'll still get called, so report a less confusing error.
 | 
					    # we'll still get called, so report a less confusing error.
 | 
				
			||||||
    if ( ref($self) !~ /^SNMP::Info/ ) {
 | 
					    if ( ref($self) !~ /SNMP::Info/ ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # croak reports one level too high.  die reports here.
 | 
					        # croak reports one level too high.  die reports here.
 | 
				
			||||||
        # I would really like to get the place that's likely to
 | 
					        # I would really like to get the place that's likely to
 | 
				
			||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS
 | 
					%MIBS
 | 
				
			||||||
    = ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
 | 
					    = ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
 | 
				
			||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
 | 
					%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (); # IF-MIB
 | 
					%MIBS = (); # IF-MIB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -61,7 +61,7 @@ sub agg_ports_ifstack {
 | 
				
			|||||||
  foreach my $idx ( keys %$ifStack ) {
 | 
					  foreach my $idx ( keys %$ifStack ) {
 | 
				
			||||||
      my ( $higher, $lower ) = split /\./, $idx;
 | 
					      my ( $higher, $lower ) = split /\./, $idx;
 | 
				
			||||||
      next if ( $higher == 0 or $lower == 0 );
 | 
					      next if ( $higher == 0 or $lower == 0 );
 | 
				
			||||||
      if ( $ifType->{ $higher } eq 'ieee8023adLag' ) {
 | 
					      if ( $ifType->{ $higher } eq 'ieee8023adLag'  or $ifType->{ $higher } eq 'propMultiplexor') {
 | 
				
			||||||
          $ret->{ $lower } = $higher;
 | 
					          $ret->{ $lower } = $higher;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,
 | 
					    %SNMP::Info::MIBS,
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
 | 
					use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'BRIDGE-MIB'   => 'dot1dBaseBridgeAddress',
 | 
					    'BRIDGE-MIB'   => 'dot1dBaseBridgeAddress',
 | 
				
			||||||
@@ -84,6 +84,17 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'bs_to'     => 'dot1dStaticAllowedToGoTo',
 | 
					    'bs_to'     => 'dot1dStaticAllowedToGoTo',
 | 
				
			||||||
    'bs_status' => 'dot1dStaticStatus',
 | 
					    'bs_status' => 'dot1dStaticStatus',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # These leafs are not part of a table, but placed here
 | 
				
			||||||
 | 
					    # to return a hash reference to ease API compatibility with
 | 
				
			||||||
 | 
					    # MST and PVST implementations indexed by a spanning tree
 | 
				
			||||||
 | 
					    # instance id
 | 
				
			||||||
 | 
					    'stp_i_mac'       => 'dot1dBaseBridgeAddress',
 | 
				
			||||||
 | 
					    'stp_i_time'      => 'dot1dStpTimeSinceTopologyChange',
 | 
				
			||||||
 | 
					    'stp_i_ntop'      => 'dot1dStpTopChanges',
 | 
				
			||||||
 | 
					    'stp_i_root'      => 'dot1dStpDesignatedRoot',
 | 
				
			||||||
 | 
					    'stp_i_root_port' => 'dot1dStpRootPort',
 | 
				
			||||||
 | 
					    'stp_i_priority'  => 'dot1dStpPriority',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Spanning Tree Protocol Table : dot1dStpPortTable
 | 
					    # Spanning Tree Protocol Table : dot1dStpPortTable
 | 
				
			||||||
    'stp_p_id'       => 'dot1dStpPort',
 | 
					    'stp_p_id'       => 'dot1dStpPort',
 | 
				
			||||||
    'stp_p_priority' => 'dot1dStpPortPriority',
 | 
					    'stp_p_priority' => 'dot1dStpPortPriority',
 | 
				
			||||||
@@ -125,15 +136,18 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'b_mac'            => \&SNMP::Info::munge_mac,
 | 
					    'b_mac'            => \&SNMP::Info::munge_mac,
 | 
				
			||||||
    'fw_mac'           => \&SNMP::Info::munge_mac,
 | 
					    'fw_mac'           => \&SNMP::Info::munge_mac,
 | 
				
			||||||
    'bs_mac'           => \&SNMP::Info::munge_mac,
 | 
					    'bs_mac'           => \&SNMP::Info::munge_mac,
 | 
				
			||||||
    'stp_root'         => \&SNMP::Info::munge_mac,
 | 
					    'stp_root'         => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
 | 
					    'stp_i_mac'        => \&SNMP::Info::munge_mac,
 | 
				
			||||||
 | 
					    'stp_i_root'       => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
    'stp_p_root'       => \&SNMP::Info::munge_prio_mac,
 | 
					    'stp_p_root'       => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
    'stp_p_bridge'     => \&SNMP::Info::munge_prio_mac,
 | 
					    'stp_p_bridge'     => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
    'stp_p_port'       => \&SNMP::Info::munge_prio_mac,
 | 
					    'stp_p_port'       => \&SNMP::Info::munge_prio_port,
 | 
				
			||||||
    'qb_cv_egress'     => \&SNMP::Info::munge_port_list,
 | 
					    'qb_cv_egress'     => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
    'qb_cv_untagged'   => \&SNMP::Info::munge_port_list,
 | 
					    'qb_cv_untagged'   => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
    'qb_v_egress'      => \&SNMP::Info::munge_port_list,
 | 
					    'qb_v_egress'      => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
    'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
 | 
					    'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
    'qb_v_untagged'    => \&SNMP::Info::munge_port_list,
 | 
					    'qb_v_untagged'    => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
 | 
					    'qb_cv_untagged'   => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -163,10 +177,20 @@ sub qb_fw_vlan {
 | 
				
			|||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $qb_fw_port = $bridge->qb_fw_port($partial);
 | 
					    my $qb_fw_port = $bridge->qb_fw_port($partial);
 | 
				
			||||||
 | 
					    my $qb_fdb_ids = $bridge->qb_fdb_index() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $qb_fw_vlan = {};
 | 
					    my $qb_fw_vlan = {};
 | 
				
			||||||
    foreach my $idx ( keys %$qb_fw_port ) {
 | 
					    foreach my $idx ( keys %$qb_fw_port ) {
 | 
				
			||||||
        my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
 | 
					        my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
 | 
				
			||||||
        $qb_fw_vlan->{$idx} = $fdb_id;
 | 
					        # Many devices do not populate the dot1qVlanCurrentTable, so default
 | 
				
			||||||
 | 
					        # to FDB ID = VID, but if we have a mapping use it.  
 | 
				
			||||||
 | 
					        my $vlan = $fdb_id;
 | 
				
			||||||
 | 
					        # defined as test since some devices have a vlan 0
 | 
				
			||||||
 | 
					        if (defined $qb_fdb_ids->{$fdb_id}) {
 | 
				
			||||||
 | 
					            $vlan = $qb_fdb_ids->{$fdb_id};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $qb_fw_vlan->{$idx} = $vlan;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return $qb_fw_vlan;
 | 
					    return $qb_fw_vlan;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -189,6 +213,25 @@ sub qb_i_vlan_t {
 | 
				
			|||||||
    return $i_vlan;
 | 
					    return $i_vlan;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub qb_fdb_index {
 | 
				
			||||||
 | 
					    my $bridge  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Some devices may not implement TimeFilter in a standard manner
 | 
				
			||||||
 | 
					    # appearing to loop on this request.  Override in the device class,
 | 
				
			||||||
 | 
					    # see Enterasys for example.
 | 
				
			||||||
 | 
					    my $qb_fdb_ids = $bridge->dot1qVlanFdbId() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Strip the TimeFilter
 | 
				
			||||||
 | 
					    my $vl_fdb_index = {};
 | 
				
			||||||
 | 
					    for my $fdb_entry (keys(%$qb_fdb_ids)) {
 | 
				
			||||||
 | 
					        (my $vlan = $fdb_entry) =~ s/^\d+\.//;
 | 
				
			||||||
 | 
					        $vl_fdb_index->{$qb_fdb_ids->{$fdb_entry}} = $vlan;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $vl_fdb_index;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Most devices now support Q-BRIDGE-MIB, fall back to 
 | 
					# Most devices now support Q-BRIDGE-MIB, fall back to 
 | 
				
			||||||
# BRIDGE-MIB for those that don't.
 | 
					# BRIDGE-MIB for those that don't.
 | 
				
			||||||
sub fw_mac {
 | 
					sub fw_mac {
 | 
				
			||||||
@@ -343,20 +386,31 @@ sub i_vlan_membership {
 | 
				
			|||||||
    my $bridge  = shift;
 | 
					    my $bridge  = shift;
 | 
				
			||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $index = $bridge->bp_index();
 | 
					    # Use VlanCurrentTable if available since it will include dynamic
 | 
				
			||||||
 | 
					    # VLANs.  However, some devices do not populate the table.
 | 
				
			||||||
 | 
					    my $v_ports = $bridge->qb_cv_egress() || $bridge->qb_v_egress();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $bridge->_vlan_hoa($v_ports, $partial);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $bridge  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Use VlanCurrentTable if available since it will include dynamic
 | 
					    # Use VlanCurrentTable if available since it will include dynamic
 | 
				
			||||||
    # VLANs.  However, some devices do not populate the table.
 | 
					    # VLANs.  However, some devices do not populate the table.
 | 
				
			||||||
 | 
					    my $v_ports = $bridge->qb_cv_untagged() || $bridge->qb_v_untagged();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 11/07 - Todo: Issue with some devices trying to query VlanCurrentTable
 | 
					    return $bridge->_vlan_hoa($v_ports, $partial);
 | 
				
			||||||
    # as table may grow very large with frequent VLAN changes.
 | 
					}
 | 
				
			||||||
    # 06/08 - VlanCurrentTable may be due to timefilter, should query with
 | 
					 | 
				
			||||||
    # zero partial for no time filter.
 | 
					 | 
				
			||||||
    # my $v_ports = $bridge->qb_cv_egress() || $bridge->qb_v_egress();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $v_ports = $bridge->qb_v_egress() || {};
 | 
					sub _vlan_hoa {
 | 
				
			||||||
 | 
					    my $bridge = shift;
 | 
				
			||||||
 | 
					    my ( $v_ports, $partial ) = @_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $i_vlan_membership = {};
 | 
					    my $index = $bridge->bp_index();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $vlan_hoa = {};
 | 
				
			||||||
    foreach my $idx ( keys %$v_ports ) {
 | 
					    foreach my $idx ( keys %$v_ports ) {
 | 
				
			||||||
        next unless ( defined $v_ports->{$idx} );
 | 
					        next unless ( defined $v_ports->{$idx} );
 | 
				
			||||||
        my $portlist = $v_ports->{$idx};
 | 
					        my $portlist = $v_ports->{$idx};
 | 
				
			||||||
@@ -376,10 +430,10 @@ sub i_vlan_membership {
 | 
				
			|||||||
            my $ifindex = $index->{$port};
 | 
					            my $ifindex = $index->{$port};
 | 
				
			||||||
            next unless ( defined($ifindex) );    # shouldn't happen
 | 
					            next unless ( defined($ifindex) );    # shouldn't happen
 | 
				
			||||||
            next if ( defined $partial and $ifindex !~ /^$partial$/ );
 | 
					            next if ( defined $partial and $ifindex !~ /^$partial$/ );
 | 
				
			||||||
            push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
 | 
					            push( @{ $vlan_hoa->{$ifindex} }, $vlan );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return $i_vlan_membership;
 | 
					    return $vlan_hoa;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub set_i_pvid {
 | 
					sub set_i_pvid {
 | 
				
			||||||
@@ -649,11 +703,21 @@ IDs.  These are the VLANs which are members of the egress list for the port.
 | 
				
			|||||||
    print "Port: $port VLAN: $vlan\n";
 | 
					    print "Port: $port VLAN: $vlan\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the untagged egress list for
 | 
				
			||||||
 | 
					the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $bridge->qb_i_vlan_t()
 | 
					=item $bridge->qb_i_vlan_t()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
 | 
					Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
 | 
				
			||||||
tagged ports or the VLAN ID.
 | 
					tagged ports or the VLAN ID.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->qb_fdb_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash: key = VLAN ID, value = FDB ID.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $bridge->v_index()
 | 
					=item $bridge->v_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns VLAN IDs
 | 
					Returns VLAN IDs
 | 
				
			||||||
@@ -707,6 +771,48 @@ to this port.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Spanning Tree Instance Globals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are not part of a table, but return a hash reference to ease API
 | 
				
			||||||
 | 
					compatibility with MST and PVST implementations indexed by a spanning tree
 | 
				
			||||||
 | 
					instance id.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->stp_i_time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns time since last topology change detected. (100ths/second)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<dot1dStpTimeSinceTopologyChange>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->stp_i_time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the total number of topology changes detected.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<dot1dStpTopChanges>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->stp_i_root()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns root of STP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<dot1dStpDesignatedRoot>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->stp_i_root_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the port number of the port that offers the lowest cost path
 | 
				
			||||||
 | 
					to the root bridge.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<dot1dStpRootPort>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bridge->stp_i_priority()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the port number of the port that offers the lowest cost path
 | 
				
			||||||
 | 
					to the root bridge.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<dot1dStpPriority>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Spanning Tree Protocol Table (C<dot1dStpPortTable>)
 | 
					=head2 Spanning Tree Protocol Table (C<dot1dStpPortTable>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Descriptions are straight from F<BRIDGE-MIB.my>
 | 
					Descriptions are straight from F<BRIDGE-MIB.my>
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info;
 | 
				
			|||||||
use vars
 | 
					use vars
 | 
				
			||||||
    qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
 | 
					    qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Five data structures required by SNMP::Info
 | 
					# Five data structures required by SNMP::Info
 | 
				
			||||||
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
 | 
					%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
  %SNMP::Info::IEEE802dot3ad::MIBS,
 | 
					  %SNMP::Info::IEEE802dot3ad::MIBS,
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
 | 
					    'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
 | 
				
			||||||
@@ -97,6 +97,10 @@ sub copy_run_tftp {
 | 
				
			|||||||
        print "Using new method, row iid: $rand\n" if $ciscoconfig->debug();
 | 
					        print "Using new method, row iid: $rand\n" if $ciscoconfig->debug();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #Check each set, delete created row if any fail
 | 
					        #Check each set, delete created row if any fail
 | 
				
			||||||
 | 
					        unless ( $ciscoconfig->set_config_row_status( 5, $rand ) ) {
 | 
				
			||||||
 | 
					            $ciscoconfig->error_throw("Initializing config copy instruction failed");
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        unless ( $ciscoconfig->set_config_source_type( 4, $rand ) ) {
 | 
					        unless ( $ciscoconfig->set_config_source_type( 4, $rand ) ) {
 | 
				
			||||||
            $ciscoconfig->error_throw("Setting source type failed");
 | 
					            $ciscoconfig->error_throw("Setting source type failed");
 | 
				
			||||||
            unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) {
 | 
					            unless ( $ciscoconfig->set_config_row_status( 6, $rand ) ) {
 | 
				
			||||||
@@ -38,7 +38,7 @@ use Exporter;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
 | 
					    'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
 | 
					%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
 | 
				
			||||||
          'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
 | 
					          'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
 | 
					%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
 | 
					%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -38,7 +38,7 @@ use Exporter;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
 | 
					%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'SNMPv2-MIB'            => 'sysDescr',
 | 
					    'SNMPv2-MIB'            => 'sysDescr',
 | 
				
			||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
 | 
					use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
 | 
					@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
 | 
				
			||||||
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
 | 
					@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'CISCO-VTP-MIB'                       => 'vtpVlanName',
 | 
					    'CISCO-VTP-MIB'                       => 'vtpVlanName',
 | 
				
			||||||
@@ -149,6 +149,7 @@ sub i_vlan {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    my $port_vlan      = $vtp->vtp_trunk_native($partial)   || {};
 | 
					    my $port_vlan      = $vtp->vtp_trunk_native($partial)   || {};
 | 
				
			||||||
    my $i_vlan         = $vtp->i_vlan2($partial)            || {};
 | 
					    my $i_vlan         = $vtp->i_vlan2($partial)            || {};
 | 
				
			||||||
 | 
					    my $trunk_dyn      = $vtp->vtp_trunk_dyn($partial)      || {};
 | 
				
			||||||
    my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
 | 
					    my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my %i_vlans;
 | 
					    my %i_vlans;
 | 
				
			||||||
@@ -165,8 +166,17 @@ sub i_vlan {
 | 
				
			|||||||
    foreach my $port ( keys %$port_vlan ) {
 | 
					    foreach my $port ( keys %$port_vlan ) {
 | 
				
			||||||
        my $vlan = $port_vlan->{$port};
 | 
					        my $vlan = $port_vlan->{$port};
 | 
				
			||||||
        next unless defined $vlan;
 | 
					        next unless defined $vlan;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # ports up and trunking should have a trunking status
 | 
				
			||||||
        my $stat = $trunk_dyn_stat->{$port};
 | 
					        my $stat = $trunk_dyn_stat->{$port};
 | 
				
			||||||
        if ( defined $stat and $stat =~ /^trunking/ ) {
 | 
					
 | 
				
			||||||
 | 
					        # vtp_trunk_dyn_stat is not useful for down ports
 | 
				
			||||||
 | 
					        # so we use vtp_trunk_dyn to see if trunking is set
 | 
				
			||||||
 | 
					        my $dyn = $trunk_dyn->{$port};
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if (($stat and $stat =~ /^trunking/ )
 | 
				
			||||||
 | 
					            or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            $i_vlans{$port} = $vlan;
 | 
					            $i_vlans{$port} = $vlan;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -217,6 +227,8 @@ sub i_vlan_membership {
 | 
				
			|||||||
    my $vtp_vlans      = $vtp->v_state();
 | 
					    my $vtp_vlans      = $vtp->v_state();
 | 
				
			||||||
    my $i_vlan         = $vtp->i_vlan2($partial)            || {};
 | 
					    my $i_vlan         = $vtp->i_vlan2($partial)            || {};
 | 
				
			||||||
    my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
 | 
					    my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
 | 
				
			||||||
 | 
					    my $trunk_dyn      = $vtp->vtp_trunk_dyn($partial)      || {};
 | 
				
			||||||
 | 
					    my $i_voice_vlan   = $vtp->i_voice_vlan($partial)       || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $i_vlan_membership = {};
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -224,14 +236,24 @@ sub i_vlan_membership {
 | 
				
			|||||||
    foreach my $port ( keys %$i_vlan ) {
 | 
					    foreach my $port ( keys %$i_vlan ) {
 | 
				
			||||||
        my $vlan = $i_vlan->{$port};
 | 
					        my $vlan = $i_vlan->{$port};
 | 
				
			||||||
        next unless defined $vlan;
 | 
					        next unless defined $vlan;
 | 
				
			||||||
        my $stat = $trunk_dyn_stat->{$port};
 | 
					        my $dyn = $trunk_dyn->{$port};
 | 
				
			||||||
        if ( defined $stat and $stat =~ /notTrunking/ ) {
 | 
					        unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) {
 | 
				
			||||||
 | 
					            push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Get voice VLANs
 | 
				
			||||||
 | 
					    foreach my $port ( keys %$i_voice_vlan ) {
 | 
				
			||||||
 | 
					        my $vlan = $i_voice_vlan->{$port};
 | 
				
			||||||
 | 
					        next unless defined $vlan;
 | 
				
			||||||
 | 
					        next unless ($vlan =~ m/[[:digit:]]+/ and $vlan < 4095);
 | 
				
			||||||
 | 
					        my $dyn = $trunk_dyn->{$port};
 | 
				
			||||||
 | 
					        unless ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))) {
 | 
				
			||||||
            push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
					            push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Get trunk ports
 | 
					    # Get trunk ports
 | 
				
			||||||
 | 
					 | 
				
			||||||
    my %oper_vlans;
 | 
					    my %oper_vlans;
 | 
				
			||||||
    foreach my $iid ( keys %$vtp_vlans ) {
 | 
					    foreach my $iid ( keys %$vtp_vlans ) {
 | 
				
			||||||
        my $vlan    = 0;
 | 
					        my $vlan    = 0;
 | 
				
			||||||
@@ -248,7 +270,9 @@ sub i_vlan_membership {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    foreach my $port ( keys %$ports_vlans ) {
 | 
					    foreach my $port ( keys %$ports_vlans ) {
 | 
				
			||||||
        my $stat = $trunk_dyn_stat->{$port};
 | 
					        my $stat = $trunk_dyn_stat->{$port};
 | 
				
			||||||
        if ( defined $stat and $stat =~ /^trunking/ ) {
 | 
					        my $dyn = $trunk_dyn->{$port};
 | 
				
			||||||
 | 
					        if (($stat and $stat =~ /^trunking/ )
 | 
				
			||||||
 | 
					            or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate')))) {
 | 
				
			||||||
            my $k     = 0;
 | 
					            my $k     = 0;
 | 
				
			||||||
            my $list1 = $ports_vlans->{$port} || '0';
 | 
					            my $list1 = $ports_vlans->{$port} || '0';
 | 
				
			||||||
            my $list2 = $ports_vlans_2k->{$port} || '0';
 | 
					            my $list2 = $ports_vlans_2k->{$port} || '0';
 | 
				
			||||||
@@ -270,6 +294,20 @@ sub i_vlan_membership {
 | 
				
			|||||||
    return $i_vlan_membership;
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $vtp  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $vlans = $vtp->i_vlan($partial);
 | 
				
			||||||
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					    foreach my $port (keys %$vlans) {
 | 
				
			||||||
 | 
					        my $vlan = $vlans->{$port};
 | 
				
			||||||
 | 
					        push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub set_i_pvid {
 | 
					sub set_i_pvid {
 | 
				
			||||||
    my $vtp = shift;
 | 
					    my $vtp = shift;
 | 
				
			||||||
    my ( $vlan_id, $ifindex ) = @_;
 | 
					    my ( $vlan_id, $ifindex ) = @_;
 | 
				
			||||||
@@ -590,6 +628,12 @@ IDs.  These are the VLANs which are members of enabled VLAN list for the port.
 | 
				
			|||||||
    print "Port: $port VLAN: $vlan\n";
 | 
					    print "Port: $port VLAN: $vlan\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $vtp->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the untagged egress list for
 | 
				
			||||||
 | 
					the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)
 | 
					=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'EXTREME-EDP-MIB'   => 'extremeEdpPortIfIndex',
 | 
					    'EXTREME-EDP-MIB'   => 'extremeEdpPortIfIndex',
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
 | 
					%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
 | 
					%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
 | 
					%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,7 +50,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'fdp_run'      => 'snFdpGlobalRun',
 | 
					    'fdp_run'      => 'snFdpGlobalRun',
 | 
				
			||||||
    'fdp_interval' => 'snFdpGlobalMessageInterval',
 | 
					    'fdp_interval' => 'snFdpGlobalMessageInterval',
 | 
				
			||||||
    'fdp_holdtime' => 'snFdpGlobalHoldTime',
 | 
					    'fdp_holdtime' => 'snFdpGlobalHoldTime',
 | 
				
			||||||
    'fdp_id'       => 'snFdpGlobalDeviceId',
 | 
					    'fdp_gid'      => 'snFdpGlobalDeviceId',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%FUNCS = (
 | 
					%FUNCS = (
 | 
				
			||||||
@@ -231,7 +231,7 @@ Time in seconds that FDP messages are kept.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
(C<fdpGlobalHoldTime>)
 | 
					(C<fdpGlobalHoldTime>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item  $fdp->fdp_id() 
 | 
					=item  $fdp->fdp_gid()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns FDP device ID.  
 | 
					Returns FDP device ID.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -38,7 +38,7 @@ use Exporter;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
 | 
					%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
  %SNMP::Info::Aggregate::MIBS,
 | 
					  %SNMP::Info::Aggregate::MIBS,
 | 
				
			||||||
@@ -44,7 +44,7 @@ use constant {
 | 
				
			|||||||
    IPV6MIB => 3,
 | 
					    IPV6MIB => 3,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -72,15 +72,18 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'ip_pfx_origin'     => 'ipAddressPrefixOrigin',         # IP-MIB
 | 
					    'ip_pfx_origin'     => 'ipAddressPrefixOrigin',         # IP-MIB
 | 
				
			||||||
    'c_pfx_origin'      => 'cIpAddressPfxOrigin',           # CISCO-IETF-IP-MIB 
 | 
					    'c_pfx_origin'      => 'cIpAddressPfxOrigin',           # CISCO-IETF-IP-MIB 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    'ip_addr6_pfx'      => 'ipAddressPrefix',              # IP-MIB 
 | 
					    'ip_addr6_pfx'      => 'ipAddressPrefix',               # IP-MIB
 | 
				
			||||||
    'c_addr6_pfx'       => 'cIpAddressPrefix',              # CISCO-IETF-IP-MIB 
 | 
					    'c_addr6_pfx'       => 'cIpAddressPrefix',              # CISCO-IETF-IP-MIB 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    'ip_addr6_index'    => 'ipAddressIfIndex',              # IP-MIBw
 | 
					    'ip_addr6_pfxlen'   => 'ipAddressPrefixLength',         # IP-MIB
 | 
				
			||||||
 | 
					    'c_addr6_pfxlen'    => 'cIpAddressPfxLength',           # CISCO-IETF-IP-MIB
 | 
				
			||||||
 | 
					    'i6_addr_pfxlen'    => 'ipv6AddrPfxLength',             # IPV6-MIB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    'ip_addr6_index'    => 'ipAddressIfIndex',              # IP-MIB
 | 
				
			||||||
    'c_addr6_index'     => 'cIpAddressIfIndex',             # CISCO-IETF-IP-MIB 
 | 
					    'c_addr6_index'     => 'cIpAddressIfIndex',             # CISCO-IETF-IP-MIB 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    'ip_addr6_type'     => 'ipAddressType',                 # IP-MIB
 | 
					    'ip_addr6_type'     => 'ipAddressType',                 # IP-MIB
 | 
				
			||||||
    'c_addr6_type'      => 'cIpAddressType',                # CISCO-IETF-IP-MIB
 | 
					    'c_addr6_type'      => 'cIpAddressType',                # CISCO-IETF-IP-MIB
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MUNGE = (
 | 
					%MUNGE = (
 | 
				
			||||||
@@ -142,6 +145,12 @@ sub ipv6_n2p_addr {
 | 
				
			|||||||
                    # so what we've collected in that variable is actually the first byte of the address.
 | 
					                    # so what we've collected in that variable is actually the first byte of the address.
 | 
				
			||||||
                    $v6_packed = pack('C', $addrsize) . $v6_packed;
 | 
					                    $v6_packed = pack('C', $addrsize) . $v6_packed;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                if (length($v6_packed) == 17) {
 | 
				
			||||||
 | 
					                    # Workaround for IPV6-MIB on Windows 2012: if the address is one byte too long, the SNMP agent probably has an incorrect
 | 
				
			||||||
 | 
					                    # implementation where a length field precedes the actual IPv6 address.
 | 
				
			||||||
 | 
					                    # In that case, the first character should be chr(16), ie 0x10; strip it if that's the case.
 | 
				
			||||||
 | 
					                    $v6_packed =~ s/^\x10//;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                if (length($v6_packed) == 16) {
 | 
					                if (length($v6_packed) == 16) {
 | 
				
			||||||
                    $v6addr = join(':', map { sprintf("%04x", $_) } unpack("n*", $v6_packed) );
 | 
					                    $v6addr = join(':', map { sprintf("%04x", $_) } unpack("n*", $v6_packed) );
 | 
				
			||||||
                    $return->{$row} = $v6addr;
 | 
					                    $return->{$row} = $v6addr;
 | 
				
			||||||
@@ -307,7 +316,9 @@ sub ipv6_addr_prefix {
 | 
				
			|||||||
    foreach my $row (keys %$ipv6_addr_prefix){
 | 
					    foreach my $row (keys %$ipv6_addr_prefix){
 | 
				
			||||||
        if ($row =~ /^(\d+)\.[\d\.]+$/) {
 | 
					        if ($row =~ /^(\d+)\.[\d\.]+$/) {
 | 
				
			||||||
            my $type = $1;
 | 
					            my $type = $1;
 | 
				
			||||||
            if ($type == 2) { # IPv6
 | 
						    if (($type == 2) or ($type == 4)) { # IPv6
 | 
				
			||||||
 | 
							# Remove interface specific part from vrf interfaces
 | 
				
			||||||
 | 
							if ($row =~ /^((\d+\.){17}\d+)/) { $row = $1 }
 | 
				
			||||||
		# Remove the OID part from the value
 | 
							# Remove the OID part from the value
 | 
				
			||||||
		my $val = $ipv6_addr_prefix->{$row};
 | 
							my $val = $ipv6_addr_prefix->{$row};
 | 
				
			||||||
		if ( $val =~ /^.+?((?:\d+\.){19}\d+)$/ ){
 | 
							if ( $val =~ /^.+?((?:\d+\.){19}\d+)$/ ){
 | 
				
			||||||
@@ -321,9 +332,60 @@ sub ipv6_addr_prefix {
 | 
				
			|||||||
    return $return;
 | 
					    return $return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub ipv6_addr_prefixlength {
 | 
				
			||||||
 | 
					    my $info = shift;
 | 
				
			||||||
 | 
					    my $return;
 | 
				
			||||||
 | 
					    my $ipv6_addr_prefix = &_test_methods( $info, {
 | 
				
			||||||
 | 
					        ip_addr6_pfx  => IPMIB,
 | 
				
			||||||
 | 
					        c_addr6_pfx   => CISCO,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    return unless defined $ipv6_addr_prefix;
 | 
				
			||||||
 | 
					    foreach my $row (keys %$ipv6_addr_prefix) {
 | 
				
			||||||
 | 
					        if ($row =~ /^(\d+)\.[\d\.]+$/) {
 | 
				
			||||||
 | 
					            my $type = $1;
 | 
				
			||||||
 | 
					            if (($type == 2) or ($type == 4)) { # IPv6
 | 
				
			||||||
 | 
					                # Remove interface specific part from vrf interfaces
 | 
				
			||||||
 | 
					                if ($row =~ /^((\d+\.){17}\d+)/) { $row = $1 }
 | 
				
			||||||
 | 
					                # Remove the OID part from the value
 | 
				
			||||||
 | 
					                my $val = $ipv6_addr_prefix->{$row};
 | 
				
			||||||
 | 
					                if ( $val =~ /^.+?((?:\d+\.){19}(\d+))$/ ) {
 | 
				
			||||||
 | 
					                    $val = $2;
 | 
				
			||||||
 | 
					                    $return->{$row} = $val;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    printf("%s: data comes from %s.\n", &_my_sub_name, $info->_method_used() ) if $info->debug();
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub ipv6_addr {
 | 
				
			||||||
 | 
					    my $info = shift;
 | 
				
			||||||
 | 
					    my $return;
 | 
				
			||||||
 | 
					    my $indexes = $info->ipv6_index();
 | 
				
			||||||
 | 
					    foreach my $row (keys %$indexes) {
 | 
				
			||||||
 | 
					        my @parts = split(/\./, $row);
 | 
				
			||||||
 | 
					        my $is_valid = 0;
 | 
				
			||||||
 | 
					        if (scalar @parts == 18) {
 | 
				
			||||||
 | 
					            my $addrtype = shift @parts;
 | 
				
			||||||
 | 
					            $is_valid = 1;
 | 
				
			||||||
 | 
					        } elsif (scalar @parts == 17) {
 | 
				
			||||||
 | 
					            $is_valid = 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        my $addrsize = shift @parts; # First element now is addrsize, should be 16
 | 
				
			||||||
 | 
					        if ($is_valid && $addrsize == 16) {
 | 
				
			||||||
 | 
					            $return->{$row} = join(':', unpack('(H4)*', pack('C*', @parts)));
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            warn sprintf("%s: unable to decode table index to IPv6 address. Raw data is [%s].\n", &_my_sub_name, $row);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub _method_used {
 | 
					sub _method_used {
 | 
				
			||||||
    my $info = shift;
 | 
					    my $info = shift;
 | 
				
			||||||
    my $return = 'none of the MIBs';
 | 
					    my $return = 'none of the MIBs';
 | 
				
			||||||
 | 
					    # FIXME ugh! a global. makes order of calls important for debug.
 | 
				
			||||||
    if (defined $info::METHOD) {
 | 
					    if (defined $info::METHOD) {
 | 
				
			||||||
        if ($info::METHOD eq IPMIB) {
 | 
					        if ($info::METHOD eq IPMIB) {
 | 
				
			||||||
            $return = 'IP-MIB';
 | 
					            $return = 'IP-MIB';
 | 
				
			||||||
@@ -343,6 +405,7 @@ sub _test_methods {
 | 
				
			|||||||
    foreach my $method (sort {$test->{$a} <=> $test->{$b}} keys %$test) {
 | 
					    foreach my $method (sort {$test->{$a} <=> $test->{$b}} keys %$test) {
 | 
				
			||||||
        $return = $info->$method || {};
 | 
					        $return = $info->$method || {};
 | 
				
			||||||
        if (scalar keys %$return) {
 | 
					        if (scalar keys %$return) {
 | 
				
			||||||
 | 
					            # FIXME ugh! a global. makes order of calls important for debug.
 | 
				
			||||||
            $info::METHOD = $test->{$method};
 | 
					            $info::METHOD = $test->{$method};
 | 
				
			||||||
            last;
 | 
					            last;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -459,6 +522,14 @@ Maps an IPv6 prefix with its origin (manual, well-known, dhcp, etc.)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Maps IPv6 addresses with their prefixes
 | 
					Maps IPv6 addresses with their prefixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipv6_addr_prefixlength()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Maps IPv6 addresses with their prefix length
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $info->ipv6_addr()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Maps a table instance to an IPv6 address
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2  Internet Address Translation Table
 | 
					=head2  Internet Address Translation Table
 | 
				
			||||||
@@ -39,10 +39,11 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    'LLDP-MIB'          => 'lldpLocSysCapEnabled',
 | 
					    'LLDP-MIB'          => 'lldpLocSysCapEnabled',
 | 
				
			||||||
 | 
					    'LLDP-EXT-MED-MIB'  => 'lldpXMedMIB',
 | 
				
			||||||
    'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB',
 | 
					    'LLDP-EXT-DOT1-MIB' => 'lldpXdot1MIB',
 | 
				
			||||||
    'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB',
 | 
					    'LLDP-EXT-DOT3-MIB' => 'lldpXdot3MIB',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@@ -149,6 +150,38 @@ sub lldp_ip {
 | 
				
			|||||||
    return \%lldp_ip;
 | 
					    return \%lldp_ip;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub lldp_ipv6 {
 | 
				
			||||||
 | 
					    my $lldp    = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $rman_addr = $lldp->lldp_rman_addr($partial) || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my %lldp_ipv6;
 | 
				
			||||||
 | 
					    foreach my $key ( keys %$rman_addr ) {
 | 
				
			||||||
 | 
					        my ( $index, $proto, $addr ) = _lldp_addr_index($key);
 | 
				
			||||||
 | 
					        next unless defined $index;
 | 
				
			||||||
 | 
					        next unless $proto == 2;
 | 
				
			||||||
 | 
					        $lldp_ipv6{$index} = $addr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return \%lldp_ipv6;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub lldp_mac {
 | 
				
			||||||
 | 
					    my $lldp    = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $rman_addr = $lldp->lldp_rman_addr($partial) || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my %lldp_ipv6;
 | 
				
			||||||
 | 
					    foreach my $key ( keys %$rman_addr ) {
 | 
				
			||||||
 | 
					        my ( $index, $proto, $addr ) = _lldp_addr_index($key);
 | 
				
			||||||
 | 
					        next unless defined $index;
 | 
				
			||||||
 | 
					        next unless $proto == 6;
 | 
				
			||||||
 | 
					        $lldp_ipv6{$index} = $addr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return \%lldp_ipv6;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub lldp_addr {
 | 
					sub lldp_addr {
 | 
				
			||||||
    my $lldp    = shift;
 | 
					    my $lldp    = shift;
 | 
				
			||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
@@ -316,20 +349,26 @@ sub _lldp_addr_index {
 | 
				
			|||||||
    my @oids   = split( /\./, $idx );
 | 
					    my @oids   = split( /\./, $idx );
 | 
				
			||||||
    my $index  = join( '.', splice( @oids, 0, 3 ) );
 | 
					    my $index  = join( '.', splice( @oids, 0, 3 ) );
 | 
				
			||||||
    my $proto  = shift(@oids);
 | 
					    my $proto  = shift(@oids);
 | 
				
			||||||
    my $length = shift(@oids) if scalar @oids > 4;
 | 
					    shift(@oids) if scalar @oids > 4; # $length
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # IPv4
 | 
					    # IPv4
 | 
				
			||||||
    if ( $proto == 1 ) {
 | 
					    if ( $proto == 1 ) {
 | 
				
			||||||
        return ( $index, $proto, join( '.', @oids ) );
 | 
					        return ( $index, $proto, join( '.', @oids ) );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # IPv6
 | 
				
			||||||
 | 
					    elsif ( $proto == 2 ) {
 | 
				
			||||||
 | 
					        return ( $index, $proto,
 | 
				
			||||||
 | 
					            join(':', unpack('(H4)*', pack('C*', @oids)) ) );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # MAC
 | 
					    # MAC
 | 
				
			||||||
    elsif ( $proto == 6 ) {
 | 
					    elsif ( $proto == 6 ) {
 | 
				
			||||||
        return ( $index, $proto,
 | 
					        return ( $index, $proto,
 | 
				
			||||||
            join( ':', map { sprintf "%02x", $_ } @oids ) );
 | 
					            join( ':', map { sprintf "%02x", $_ } @oids ) );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO - Need to handle other protocols, i.e. IPv6
 | 
					    # TODO - Other protocols may be used as well; implement when needed?
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -397,6 +436,8 @@ None.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item F<LLDP-MIB>
 | 
					=item F<LLDP-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item F<LLDP-EXT-MED-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item F<LLDP-EXT-DOT1-MIB>
 | 
					=item F<LLDP-EXT-DOT1-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item F<LLDP-EXT-DOT3-MIB>
 | 
					=item F<LLDP-EXT-DOT3-MIB>
 | 
				
			||||||
@@ -495,10 +536,24 @@ if unable defaults to (C<lldpRemLocalPortNum>).
 | 
				
			|||||||
Returns remote IPv4 address.  Returns for all other address types, use
 | 
					Returns remote IPv4 address.  Returns for all other address types, use
 | 
				
			||||||
lldp_addr if you want any return address type.
 | 
					lldp_addr if you want any return address type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item  $lldp->lldp_ipv6()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns remote IPv6 address, if known.  Returns for all other address types,
 | 
				
			||||||
 | 
					use lldp_addr if you don't care about return address type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item  $lldp->lldp_mac()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns remote (management) MAC address, if known.  Returns for all other 
 | 
				
			||||||
 | 
					address types, use lldp_addr if you don't care about return address type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item  $lldp->lldp_addr()
 | 
					=item  $lldp->lldp_addr()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns remote address.  Type may be any IANA Address Family Number.
 | 
					Returns remote address.  Type may be any IANA Address Family Number.
 | 
				
			||||||
Currently only returns IPv4 or MAC addresses.
 | 
					Currently only returns IPv4, IPv6 or MAC addresses. If the remote device
 | 
				
			||||||
 | 
					returns more than one address type, this method will give only one. Which one
 | 
				
			||||||
 | 
					is returned is decided by chance, phase of the moon and Perl hash ordering.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use lldp_mac, lldp_ip or lldp_ipv6 if you want a specific address type.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $lldp->lldp_port()
 | 
					=item $lldp->lldp_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -530,7 +585,7 @@ the remote system.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item $lldp->lldp_rem_id()
 | 
					=item $lldp->lldp_rem_id()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns the string value used to identify the chassis component    associated
 | 
					Returns the string value used to identify the chassis component associated
 | 
				
			||||||
with the remote system.
 | 
					with the remote system.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(C<lldpRemChassisId>)
 | 
					(C<lldpRemChassisId>)
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
 | 
					%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set for No CDP
 | 
					# Set for No CDP
 | 
				
			||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
 | 
					%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
 | 
				
			||||||
@@ -78,7 +78,7 @@ sub model {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    my $desc = $allied->description();
 | 
					    my $desc = $allied->description();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( $desc =~ /(AT-\d{4}\S{1}?)/ ) {
 | 
					    if ( $desc =~ /(AT-\d{4}\S{1})/ ) {
 | 
				
			||||||
        return $1;
 | 
					        return $1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set for No CDP
 | 
					# Set for No CDP
 | 
				
			||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
 | 
					%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
 | 
				
			||||||
@@ -50,11 +50,11 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Layer1::FUNCS,
 | 
					    %SNMP::Info::Layer1::FUNCS,
 | 
				
			||||||
    'asante_port'  => 'ePortIndex',
 | 
					    'asante_port'  => 'ePortIndex',
 | 
				
			||||||
    'asante_group' => 'ePortGrpIndex',
 | 
					    'asante_group' => 'ePortGrpIndex',
 | 
				
			||||||
    'i_type'       => 'ePortStateType',
 | 
					    'i_type'       => 'ePortGrpIndex',
 | 
				
			||||||
    'asante_up'    => 'ePortStateLinkStatus',
 | 
					    'asante_up'    => 'ePortStateLinkStatus',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( %SNMP::Info::Layer1::MIBS, 'ASANTE-HUB1012-MIB' => 'asante' );
 | 
					%MIBS = ( %SNMP::Info::Layer1::MIBS, 'ASANTE-AH1012-MIB' => 'asante' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MUNGE = ( %SNMP::Info::Layer1::MUNGE, );
 | 
					%MUNGE = ( %SNMP::Info::Layer1::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -202,7 +202,7 @@ Asante device through SNMP.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=over
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item F<ASANTE-HUB1012-MIB>
 | 
					=item F<ASANTE-AH1012-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -230,7 +230,7 @@ Returns 'asante' :)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item $asante->model()
 | 
					=item $asante->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Cross references $asante->id() to the F<ASANTE-HUB1012-MIB> and returns
 | 
					Cross references $asante->id() to the F<ASANTE-AH1012-MIB> and returns
 | 
				
			||||||
the results.
 | 
					the results.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer1::MIBS,
 | 
					    %SNMP::Info::Layer1::MIBS,
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
@@ -38,18 +38,20 @@ use SNMP::Info;
 | 
				
			|||||||
use SNMP::Info::Bridge;
 | 
					use SNMP::Info::Bridge;
 | 
				
			||||||
use SNMP::Info::Entity;
 | 
					use SNMP::Info::Entity;
 | 
				
			||||||
use SNMP::Info::PowerEthernet;
 | 
					use SNMP::Info::PowerEthernet;
 | 
				
			||||||
 | 
					use SNMP::Info::LLDP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SNMP::Info::Layer2::ISA
 | 
					@SNMP::Info::Layer2::ISA
 | 
				
			||||||
    = qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet Exporter/;
 | 
					    = qw/SNMP::Info SNMP::Info::Bridge SNMP::Info::Entity SNMP::Info::PowerEthernet SNMP::Info::LLDP Exporter/;
 | 
				
			||||||
@SNMP::Info::Layer2::EXPORT_OK = qw//;
 | 
					@SNMP::Info::Layer2::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,         %SNMP::Info::Bridge::MIBS,
 | 
					    %SNMP::Info::MIBS,         %SNMP::Info::Bridge::MIBS,
 | 
				
			||||||
    %SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
 | 
					    %SNMP::Info::Entity::MIBS, %SNMP::Info::PowerEthernet::MIBS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
@@ -57,6 +59,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Bridge::GLOBALS,
 | 
					    %SNMP::Info::Bridge::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::Entity::GLOBALS,
 | 
					    %SNMP::Info::Entity::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::PowerEthernet::GLOBALS,
 | 
					    %SNMP::Info::PowerEthernet::GLOBALS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::GLOBALS,
 | 
				
			||||||
    'serial1' =>
 | 
					    'serial1' =>
 | 
				
			||||||
        '.1.3.6.1.4.1.9.3.6.3.0',    # OLD-CISCO-CHASSIS-MIB::chassisId.0
 | 
					        '.1.3.6.1.4.1.9.3.6.3.0',    # OLD-CISCO-CHASSIS-MIB::chassisId.0
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@@ -64,6 +67,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
%FUNCS = (
 | 
					%FUNCS = (
 | 
				
			||||||
    %SNMP::Info::FUNCS,         %SNMP::Info::Bridge::FUNCS,
 | 
					    %SNMP::Info::FUNCS,         %SNMP::Info::Bridge::FUNCS,
 | 
				
			||||||
    %SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
 | 
					    %SNMP::Info::Entity::FUNCS, %SNMP::Info::PowerEthernet::FUNCS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::FUNCS,
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MUNGE = (
 | 
					%MUNGE = (
 | 
				
			||||||
@@ -73,6 +77,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Bridge::MUNGE,
 | 
					    %SNMP::Info::Bridge::MUNGE,
 | 
				
			||||||
    %SNMP::Info::Entity::MUNGE,
 | 
					    %SNMP::Info::Entity::MUNGE,
 | 
				
			||||||
    %SNMP::Info::PowerEthernet::MUNGE,
 | 
					    %SNMP::Info::PowerEthernet::MUNGE,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MUNGE,
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Method OverRides
 | 
					# Method OverRides
 | 
				
			||||||
@@ -133,23 +138,6 @@ sub serial {
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub i_ignore {
 | 
					 | 
				
			||||||
    my $l2      = shift;
 | 
					 | 
				
			||||||
    my $partial = shift;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my $i_type = $l2->i_type($partial) || {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my %i_ignore = ();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    foreach my $if ( keys %$i_type ) {
 | 
					 | 
				
			||||||
        my $type = $i_type->{$if};
 | 
					 | 
				
			||||||
        $i_ignore{$if}++
 | 
					 | 
				
			||||||
            if $type =~ /(loopback|other|cpu)/i;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return \%i_ignore;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub interfaces {
 | 
					sub interfaces {
 | 
				
			||||||
    my $l2      = shift;
 | 
					    my $l2      = shift;
 | 
				
			||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
@@ -235,6 +223,8 @@ after determining a more specific class using the method above.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Entity
 | 
					=item SNMP::Info::Entity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Required MIBs
 | 
					=head2 Required MIBs
 | 
				
			||||||
@@ -288,6 +278,10 @@ See documentation in L<SNMP::Info::Bridge/"GLOBALS"> for details.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
 | 
					See documentation in L<SNMP::Info::Entity/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Globals imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 TABLE METHODS
 | 
					=head1 TABLE METHODS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These are methods that return tables of information in the form of a reference
 | 
					These are methods that return tables of information in the form of a reference
 | 
				
			||||||
@@ -304,12 +298,6 @@ name.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Defaults to C<ifDescr> but checks and overrides with C<ifName>
 | 
					Defaults to C<ifDescr> but checks and overrides with C<ifName>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $l2->i_ignore()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns reference to hash.  Increments value of IID if port is to be ignored.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Ignores ports with C<ifType> of loopback, propvirtual, other, and cpu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info
 | 
					=head2 Table Methods imported from SNMP::Info
 | 
				
			||||||
@@ -324,4 +312,8 @@ See documentation in L<SNMP::Info::Bridge/"TABLE METHODS"> for details.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
 | 
					See documentation in L<SNMP::Info::Entity/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=cut
 | 
					=cut
 | 
				
			||||||
@@ -11,11 +11,12 @@ use SNMP::Info::CDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::LLDP::MIBS,
 | 
					    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
 | 
					    'A3Com-products-MIB' => 'wlanAP7760',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
@@ -72,6 +73,8 @@ sub model {
 | 
				
			|||||||
    my $descr = $dsmodel->description();
 | 
					    my $descr = $dsmodel->description();
 | 
				
			||||||
    if ( $descr =~ /^([\S ]+) Software.*/){
 | 
					    if ( $descr =~ /^([\S ]+) Software.*/){
 | 
				
			||||||
        return $1;
 | 
					        return $1;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        return $descr;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -117,6 +120,8 @@ Subclass for 3Com L2 devices
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=over
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item F<A3Com-products-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item Inherited Classes' MIBs
 | 
					=item Inherited Classes' MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
 | 
					See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
							
								
								
									
										286
									
								
								lib/SNMP/Info/Layer2/Adtran.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										286
									
								
								lib/SNMP/Info/Layer2/Adtran.pm
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,286 @@
 | 
				
			|||||||
 | 
					package SNMP::Info::Layer2::Adtran;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::LLDP;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer2;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::Adtran::ISA       = qw/SNMP::Info::LLDP SNMP::Info::Layer2 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::Adtran::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This will be filled in with the device's index into the EntPhysicalEntry
 | 
				
			||||||
 | 
					# table by the serial() function.
 | 
				
			||||||
 | 
					our $index = undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = ( 
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
 | 
					    'ADTRAN-GENEVC-MIB'     => 'adGenEVCMIB',
 | 
				
			||||||
 | 
					    'ADTRAN-GENMEF-MIB'     => 'adGenMEFMIB',
 | 
				
			||||||
 | 
					    'ADTRAN-GENPORT-MIB'    => 'adGenPort',
 | 
				
			||||||
 | 
					    'ADTRAN-MIB'            => 'adtran',
 | 
				
			||||||
 | 
					    'ADTRAN-AOSUNIT'     => 'adGenAOSUnitMib',
 | 
				
			||||||
 | 
					 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer2::GLOBALS, 
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::GLOBALS, 
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::GLOBALS,
 | 
				
			||||||
 | 
					    'serial'    => 'adProdSerialNumber',
 | 
				
			||||||
 | 
					    'ad_mgmtevcvid' => 'adGenEVCSysMgmtEVCSTagVID',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = ( %SNMP::Info::Layer2::FUNCS,
 | 
				
			||||||
 | 
					           %SNMP::Info::Layer3::FUNCS,
 | 
				
			||||||
 | 
					           %SNMP::Info::LLDP::FUNCS, 
 | 
				
			||||||
 | 
					           'ad_evcstag' => 'adGenEVCLookupName',
 | 
				
			||||||
 | 
					           'ad_menport' => 'adGenMenPortRowStatus',
 | 
				
			||||||
 | 
					           'ad_evcnamevid' => 'adGenEVCSTagVID',
 | 
				
			||||||
 | 
					           'ad_mgmtevcports' => 'adGenSysMgmtEVCInterfaceConnectionType',
 | 
				
			||||||
 | 
					           'ad_evcmapuniport' => 'adGenMEFMapUNIPort',
 | 
				
			||||||
 | 
					           'ad_evcmapevc' => 'adGenMEFMapAssociatedEVCAlias',
 | 
				
			||||||
 | 
					           'ad_genportcustuse' => 'adGenPortCustomerUse',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::LLDP::MUNGE, %SNMP::Info::Layer3::MUNGE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'adtran';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    return 'aos';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub layers {
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    my $layers = $adtran->SUPER::layers();
 | 
				
			||||||
 | 
					    # Some netvantas don't report L2 properly 
 | 
				
			||||||
 | 
					    my $macs   = $adtran->fw_mac();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (keys %$macs) {
 | 
				
			||||||
 | 
					        my $l = substr $layers, 6, 1, "1";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $layers;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os_ver {
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    my $ver = $adtran->adProdSwVersion() || undef;
 | 
				
			||||||
 | 
					    return $ver if (defined $ver);
 | 
				
			||||||
 | 
					    my $aos_ver = $adtran->adAOSDeviceVersion();
 | 
				
			||||||
 | 
					    return $aos_ver;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sub model { 
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    my $id = $adtran->id();
 | 
				
			||||||
 | 
					    my $mod = $adtran->adProdName() || undef;
 | 
				
			||||||
 | 
					    return $mod if (defined $mod);
 | 
				
			||||||
 | 
					    my $model = $adtran->adAOSDeviceProductName() || undef;
 | 
				
			||||||
 | 
					    return $model;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sub serial { 
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    my $e_serial = $adtran->e_serial() || {};
 | 
				
			||||||
 | 
					    my $serial2 = $e_serial->{1} || undef;
 | 
				
			||||||
 | 
					    return $serial2 if ( defined $serial2 );
 | 
				
			||||||
 | 
					    return $adtran->orig_serial();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_name {
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					    my $i_name = $adtran->SUPER::i_alias() || undef; 
 | 
				
			||||||
 | 
					    return $i_name if (defined $i_name);
 | 
				
			||||||
 | 
					    $i_name = {};
 | 
				
			||||||
 | 
					    my $adname = $adtran->ad_genportcustuse() || undef;
 | 
				
			||||||
 | 
					    if (defined $adname) {  
 | 
				
			||||||
 | 
					        foreach my $port (keys %$adname) { 
 | 
				
			||||||
 | 
					            my @split = split(/\./,$port);
 | 
				
			||||||
 | 
					            $i_name->{@split[1]} = $adname->{$port};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $i_name;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sub i_vlan { 
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					    my $uniports = $adtran->ad_evcmapuniport() || undef;
 | 
				
			||||||
 | 
					    my $evcmaps = $adtran->ad_evcmapevc() || undef;
 | 
				
			||||||
 | 
					    my $v_names = $adtran->ad_evcnamevid() || undef;
 | 
				
			||||||
 | 
					    if (defined $uniports) {
 | 
				
			||||||
 | 
					        my $vlans = {};
 | 
				
			||||||
 | 
					        foreach my $oid (keys %$v_names) {
 | 
				
			||||||
 | 
					            my $name = pack("C*", split(/\./,$oid));
 | 
				
			||||||
 | 
					            $vlans->{$name} = $v_names->{$oid};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        my $i_vlan = {};
 | 
				
			||||||
 | 
					        foreach my $evcmap (keys %$evcmaps) {
 | 
				
			||||||
 | 
					            $i_vlan->{$uniports->{$evcmap}} = $vlans->{$evcmaps->{$evcmap}};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return $i_vlan;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return {};
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					sub i_vlan_membership {         
 | 
				
			||||||
 | 
					    my $adtran  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					    my $i_vlan = $adtran->ad_menport();
 | 
				
			||||||
 | 
					    if (defined $i_vlan) { 
 | 
				
			||||||
 | 
					        my $vlans = {};
 | 
				
			||||||
 | 
					        my $v_name = $adtran->v_name();
 | 
				
			||||||
 | 
					        foreach my $vid (keys %$v_name) {
 | 
				
			||||||
 | 
					            $vlans->{$v_name->{$vid}} = $vid;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        my $if_vlans = {};
 | 
				
			||||||
 | 
					        foreach my $entry (keys %$i_vlan) {
 | 
				
			||||||
 | 
					            my @split = split(/(\.0)+\./,$entry);
 | 
				
			||||||
 | 
					            my $name = pack("C*", split(/\./,@split[0]));
 | 
				
			||||||
 | 
					            push @{$if_vlans->{@split[2]}}, $vlans->{$name};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        my $mgmtevcports = $adtran->ad_mgmtevcports();
 | 
				
			||||||
 | 
					        my $mgmtevcid = $adtran->ad_mgmtevcvid();
 | 
				
			||||||
 | 
					        foreach my $port (keys %$mgmtevcports) {
 | 
				
			||||||
 | 
					           push @{$if_vlans->{$port}}, $mgmtevcid;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return $if_vlans;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return {};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub v_name {
 | 
				
			||||||
 | 
					    my $adtran = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					    my $v_index = $adtran->ad_evcstag();
 | 
				
			||||||
 | 
					    return {} unless defined $v_index;
 | 
				
			||||||
 | 
					    $v_index->{$adtran->ad_mgmtevcvid()} = 'system-management-evc';
 | 
				
			||||||
 | 
					    return $v_index;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer2::Adtran - SNMP Interface to Adtran Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you. 
 | 
				
			||||||
 | 
					 my $adtran = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myrouter',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        ) 
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class      = $adtran->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for adtran Devices running JUNOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes' MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'adtran'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'aos'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->layers()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ensures that layer two is reported, at least.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the software version extracted first from C<adProdSwVersion> or
 | 
				
			||||||
 | 
					C<adAOSDeviceVersion>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the model extracted first from C<adProdName> or
 | 
				
			||||||
 | 
					C<adAOSDeviceProductName>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns serial number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Globals imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Global Methods imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 TABLE METHODS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return tables of information in the form of a reference
 | 
				
			||||||
 | 
					to a hash.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->v_name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					VLAN names table.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->i_name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Interface names table.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->i_vlan()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns a mapping between C<ifIndex> and the PVID or default VLAN.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $adtran->i_vlan_membership()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the egress list for the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,      %SNMP::Info::Bridge::MIBS,
 | 
					    %SNMP::Info::MIBS,      %SNMP::Info::Bridge::MIBS,
 | 
				
			||||||
@@ -97,6 +97,14 @@ my $mcs_index = {
 | 
				
			|||||||
	m13 => '104',
 | 
						m13 => '104',
 | 
				
			||||||
	m14 => '117',
 | 
						m14 => '117',
 | 
				
			||||||
	m15 => '130',
 | 
						m15 => '130',
 | 
				
			||||||
 | 
						m16 => '19.5',
 | 
				
			||||||
 | 
						m17 => '39',
 | 
				
			||||||
 | 
						m18 => '58.5',
 | 
				
			||||||
 | 
						m19 => '78',
 | 
				
			||||||
 | 
						m20 => '117',
 | 
				
			||||||
 | 
						m21 => '156',
 | 
				
			||||||
 | 
						m22 => '175.5',
 | 
				
			||||||
 | 
						m23 => '195',
 | 
				
			||||||
	# This is a cheat for 802.11a bonded
 | 
						# This is a cheat for 802.11a bonded
 | 
				
			||||||
	m108 => '108',
 | 
						m108 => '108',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -117,6 +125,14 @@ my $mcs_index = {
 | 
				
			|||||||
	m13 => '240',
 | 
						m13 => '240',
 | 
				
			||||||
	m14 => '270',
 | 
						m14 => '270',
 | 
				
			||||||
	m15 => '300',
 | 
						m15 => '300',
 | 
				
			||||||
 | 
						m16 => '45',
 | 
				
			||||||
 | 
						m17 => '90',
 | 
				
			||||||
 | 
						m18 => '135',
 | 
				
			||||||
 | 
						m19 => '180',
 | 
				
			||||||
 | 
						m20 => '270',
 | 
				
			||||||
 | 
						m21 => '360',
 | 
				
			||||||
 | 
						m22 => '405',
 | 
				
			||||||
 | 
						m23 => '450',
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -165,6 +181,7 @@ sub cd11_txrate {
 | 
				
			|||||||
	elsif ( $rate =~ /^m/ ) {
 | 
						elsif ( $rate =~ /^m/ ) {
 | 
				
			||||||
	    my $band = $protos->{$idx};
 | 
						    my $band = $protos->{$idx};
 | 
				
			||||||
	    my $bw   = $bws->{$band};
 | 
						    my $bw   = $bws->{$band};
 | 
				
			||||||
 | 
						    # FIXME throw some kind of error if we get an index/rate that we haven't implemented yet? Now we simply return "0.0"...
 | 
				
			||||||
	    $cd11_txrate->{$idx} = [ $mcs_index->{$bw}->{$rate} || '0.0' ];
 | 
						    $cd11_txrate->{$idx} = [ $mcs_index->{$bw}->{$rate} || '0.0' ];
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::IEEE802dot11::GLOBALS,
 | 
					    %SNMP::Info::IEEE802dot11::GLOBALS,
 | 
				
			||||||
@@ -60,7 +60,8 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::CiscoConfig::GLOBALS,
 | 
					    %SNMP::Info::CiscoConfig::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::CDP::GLOBALS,
 | 
					    %SNMP::Info::CDP::GLOBALS,
 | 
				
			||||||
    'serial' => 'entPhysicalSerialNum.1',
 | 
					    'serial' => 'entPhysicalSerialNum.1',
 | 
				
			||||||
    'descr'  => 'sysDescr'
 | 
					    'descr'  => 'sysDescr',
 | 
				
			||||||
 | 
					    'ps1_type' => 'cpoePdCurrentPowerSource'
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%FUNCS = (
 | 
					%FUNCS = (
 | 
				
			||||||
@@ -97,6 +98,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'CISCO-DOT11-ASSOCIATION-MIB'         => 'cDot11ClientSubIfIndex',
 | 
					    'CISCO-DOT11-ASSOCIATION-MIB'         => 'cDot11ClientSubIfIndex',
 | 
				
			||||||
    'CISCO-DOT11-SSID-SECURITY-MIB'       => 'cdot11SecVlanNameId',
 | 
					    'CISCO-DOT11-SSID-SECURITY-MIB'       => 'cdot11SecVlanNameId',
 | 
				
			||||||
    'CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB' => 'cviRoutedVlanIfIndex',
 | 
					    'CISCO-VLAN-IFTABLE-RELATIONSHIP-MIB' => 'cviRoutedVlanIfIndex',
 | 
				
			||||||
 | 
					    'CISCO-POE-PD-MIB'                    => 'cpoePdCurrentPowerSource',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MUNGE = (
 | 
					%MUNGE = (
 | 
				
			||||||
@@ -457,6 +459,18 @@ sub i_ssidmac {
 | 
				
			|||||||
    return $i_ssidmac;
 | 
					    return $i_ssidmac;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###
 | 
				
			||||||
 | 
					# PoE status.  The ps1_type is the PoE injector type, which is just
 | 
				
			||||||
 | 
					# a scalar; the status is a little more complex.
 | 
				
			||||||
 | 
					sub ps1_status {
 | 
				
			||||||
 | 
					    my $aironet = shift;
 | 
				
			||||||
 | 
					    my $idx = $aironet->cpoePdCurrentPowerLevel();
 | 
				
			||||||
 | 
					    my $mw = $aironet->cpoePdSupportedPower( $idx );
 | 
				
			||||||
 | 
					    my $descr = $aironet->cpoePdSupportedPowerMode( $idx );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return sprintf( "%.2fW (%s)", $mw->{$idx} * 0.001, $descr->{$idx} );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -540,17 +554,13 @@ These are methods that return scalar value from SNMP
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=over
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $aironet->discription()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Adds info from method e_descr() from SNMP::Info::Entity
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item $aironet->vendor()
 | 
					=item $aironet->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns 'cisco'
 | 
					Returns 'cisco'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $aironet->description()
 | 
					=item $aironet->description()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
System description
 | 
					System description. Adds info from method e_descr() from SNMP::Info::Entity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -648,6 +658,11 @@ being broadcast.
 | 
				
			|||||||
With the same keys as i_ssidlist, returns the Basic service set
 | 
					With the same keys as i_ssidlist, returns the Basic service set
 | 
				
			||||||
identification (BSSID), MAC address, the AP is using for the SSID. 
 | 
					identification (BSSID), MAC address, the AP is using for the SSID. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $aironet ps1_status()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the PoE injector status based on C<cpoePdSupportedPower> and 
 | 
				
			||||||
 | 
					C<cpoePdSupportedPowerMode>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::Layer2
 | 
					=head2 Table Methods imported from SNMP::Info::Layer2
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
 | 
					%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,    %SNMP::Info::LLDP::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
@@ -341,6 +341,60 @@ sub peth_port_ifindex {
 | 
				
			|||||||
    return \%peth_port_ifindex;
 | 
					    return \%peth_port_ifindex;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Currently only ERS 4800 v5.8+ support the rcBridgeSpbmMacTable 
 | 
				
			||||||
 | 
					# which holds the FDB for a SPBM edge deployment.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Q-BRIDGE still holds some entries when the rcBridgeSpbmMacTable is in use
 | 
				
			||||||
 | 
					# so we merge hash entries.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub fw_mac {
 | 
				
			||||||
 | 
					    my $rapidcity = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $qb = $rapidcity->SUPER::fw_mac() || {};
 | 
				
			||||||
 | 
					    my $spbm = $rapidcity->rc_spbm_fw_mac() || {};
 | 
				
			||||||
 | 
					    my $fw_mac = { %$qb, %$spbm };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $fw_mac;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub fw_port {
 | 
				
			||||||
 | 
					    my $rapidcity = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $qb = $rapidcity->SUPER::fw_port() || {};
 | 
				
			||||||
 | 
					    my $spbm = $rapidcity->rc_spbm_fw_port() || {};
 | 
				
			||||||
 | 
					    my $fw_port = { %$qb, %$spbm };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $fw_port;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub fw_status {
 | 
				
			||||||
 | 
					    my $rapidcity = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $qb = $rapidcity->SUPER::fw_status() || {};    
 | 
				
			||||||
 | 
					    my $spbm = $rapidcity->rc_spbm_fw_status() || {};
 | 
				
			||||||
 | 
					    my $fw_status = { %$qb, %$spbm };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $fw_status;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub qb_fw_vlan {
 | 
				
			||||||
 | 
					    my $rapidcity = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $qb = $rapidcity->SUPER::qb_fw_vlan() || {};
 | 
				
			||||||
 | 
					    my $spbm = $rapidcity->rc_spbm_fw_vlan() || {};
 | 
				
			||||||
 | 
					    my $qb_fw_vlan = { %$qb, %$spbm };
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $qb_fw_vlan;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Baystack uses S5-AGENT-MIB (loaded in NortelStack) versus RAPID-CITY
 | 
				
			||||||
 | 
					sub stp_ver {
 | 
				
			||||||
 | 
					    my $rapidcity = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $rapidcity->s5AgSysSpanningTreeOperMode()
 | 
				
			||||||
 | 
					      || $rapidcity->SUPER::stp_ver();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
@@ -444,6 +498,14 @@ Returns 'baystack' or 'boss' depending on software version.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Returns the firmware version extracted from C<sysDescr>.
 | 
					Returns the firmware version extracted from C<sysDescr>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $baystack->stp_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the particular STP version running on this device.  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Values: C<nortelStpg>, C<pvst>, C<rstp>, C<mstp>, C<ieee8021d>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<s5AgSysSpanningTreeOperMode>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Overrides
 | 
					=head2 Overrides
 | 
				
			||||||
@@ -600,6 +662,32 @@ ns_e_vendor().
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Layer 2 Forwarding Database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These methods try to obtain the layer 2 forwarding database entries via the
 | 
				
			||||||
 | 
					normal bridge methods as well as SPBM entries via rapid city methods.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $baystack->fw_mac()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of forwarding table MAC Addresses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $baystack->fw_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of forwarding table entries port interface
 | 
				
			||||||
 | 
					identifier (iid)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $baystack->qb_fw_vlan()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of forwarding table entries VLAN ID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $baystack->fw_status()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of forwarding table entries status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::SONMP
 | 
					=head2 Table Methods imported from SNMP::Info::SONMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.
 | 
					See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.
 | 
				
			||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::GLOBALS,
 | 
					    %SNMP::Info::Layer2::GLOBALS,
 | 
				
			||||||
@@ -261,6 +261,8 @@ sub i_vlan_membership {
 | 
				
			|||||||
    return $i_vlan_membership;
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged { return; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub bp_index {
 | 
					sub bp_index {
 | 
				
			||||||
    my $c1900   = shift;
 | 
					    my $c1900   = shift;
 | 
				
			||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
@@ -470,6 +472,9 @@ bridge group IDs.
 | 
				
			|||||||
    print "Port: $port VLAN: $vlan\n";
 | 
					    print "Port: $port VLAN: $vlan\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $c1900->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unsupported, returns nothing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $c1900->bp_index()
 | 
					=item $c1900->bp_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::Cisco::GLOBALS,
 | 
					    %SNMP::Info::Layer2::Cisco::GLOBALS,
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::Cisco::MIBS,
 | 
					    %SNMP::Info::Layer2::Cisco::MIBS,
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,
 | 
					    %SNMP::Info::MIBS,
 | 
				
			||||||
@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
@@ -50,11 +50,7 @@ use SNMP::Info::CDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					 | 
				
			||||||
# This will be filled in with the device's index into the EntPhysicalEntry
 | 
					 | 
				
			||||||
# table by the serial() function.
 | 
					 | 
				
			||||||
our $index = undef;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::GLOBALS,
 | 
					    %SNMP::Info::Layer2::GLOBALS,
 | 
				
			||||||
@@ -98,6 +94,10 @@ sub vendor {
 | 
				
			|||||||
    return 'cisco';
 | 
					    return 'cisco';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    return 'ros';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Walk the entPhysicalSerialNum table and return the first serial found
 | 
					# Walk the entPhysicalSerialNum table and return the first serial found
 | 
				
			||||||
sub serial {
 | 
					sub serial {
 | 
				
			||||||
    my $ciscosb  = shift;
 | 
					    my $ciscosb  = shift;
 | 
				
			||||||
@@ -113,20 +113,27 @@ sub serial {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
sub os_ver {
 | 
					sub os_ver {
 | 
				
			||||||
    my $ciscosb = shift;
 | 
					    my $ciscosb = shift;
 | 
				
			||||||
    my $os_ver  = $ciscosb->e_swver();
 | 
					    my $e_swver  = $ciscosb->e_swver();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return $os_ver->{$index} if defined $index;
 | 
					    foreach my $e ( sort keys %$e_swver ) {
 | 
				
			||||||
 | 
					        if (defined $e_swver->{$e} and $e_swver->{$e} !~ /^\s*$/) {
 | 
				
			||||||
 | 
					            return $e_swver->{$e};
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
  
 | 
					
 | 
				
			||||||
# Grab e_model from Entity and tag on e_hwver
 | 
					# Grab e_model from Entity and tag on e_hwver
 | 
				
			||||||
sub model {
 | 
					sub model {
 | 
				
			||||||
    my $ciscosb = shift;
 | 
					    my $ciscosb = shift;
 | 
				
			||||||
    my $e_model   = $ciscosb->e_model();
 | 
					    my $e_model = $ciscosb->e_model();
 | 
				
			||||||
    my $e_hwver = $ciscosb->e_hwver();
 | 
					    my $e_hwver = $ciscosb->e_hwver();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (defined ($index)) {
 | 
					    foreach my $e ( sort keys %$e_model ) {
 | 
				
			||||||
        my $model = "$e_model->{$index} $e_hwver->{$index}";
 | 
					        if (defined $e_model->{$e} and $e_model->{$e} !~ /^\s*$/) {
 | 
				
			||||||
        return $model;
 | 
					            return $e_model->{$e};
 | 
				
			||||||
 | 
					            #my $model = "$e_model->{$e} $e_hwver->{$e}";
 | 
				
			||||||
 | 
					            #return $model;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return $ciscosb->description();
 | 
					    return $ciscosb->description();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -156,14 +163,14 @@ Nic Bernstein (shamelessly stolen from Max Baker's Aironet code)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=head1 SYNOPSIS
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 # Let SNMP::Info determine the correct subclass for you. 
 | 
					 # Let SNMP::Info determine the correct subclass for you.
 | 
				
			||||||
 my $ciscosb = new SNMP::Info(
 | 
					 my $ciscosb = new SNMP::Info(
 | 
				
			||||||
                          AutoSpecify => 1,
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
                          Debug       => 1,
 | 
					                          Debug       => 1,
 | 
				
			||||||
                          DestHost    => 'myswitch',
 | 
					                          DestHost    => 'myswitch',
 | 
				
			||||||
                          Community   => 'public',
 | 
					                          Community   => 'public',
 | 
				
			||||||
                          Version     => 2
 | 
					                          Version     => 2
 | 
				
			||||||
                        ) 
 | 
					                        )
 | 
				
			||||||
    or die "Can't connect to DestHost.\n";
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 my $class      = $ciscosb->class();
 | 
					 my $class      = $ciscosb->class();
 | 
				
			||||||
@@ -210,6 +217,10 @@ These are methods that return scalar value from SNMP
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Returns 'cisco'
 | 
					Returns 'cisco'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ciscosb->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'ros'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $ciscosb->os_ver()
 | 
					=item $ciscosb->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns software version (C<entPhysicalSoftwareRev>)
 | 
					Returns software version (C<entPhysicalSoftwareRev>)
 | 
				
			||||||
@@ -36,15 +36,13 @@ use strict;
 | 
				
			|||||||
use Exporter;
 | 
					use Exporter;
 | 
				
			||||||
use SNMP::Info::Layer3;
 | 
					use SNMP::Info::Layer3;
 | 
				
			||||||
use SNMP::Info::MAU;
 | 
					use SNMP::Info::MAU;
 | 
				
			||||||
use SNMP::Info::LLDP;
 | 
					 | 
				
			||||||
use SNMP::Info::CDP;
 | 
					use SNMP::Info::CDP;
 | 
				
			||||||
use SNMP::Info::Aggregate;
 | 
					use SNMP::Info::Aggregate 'agg_ports_ifstack';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SNMP::Info::Layer2::HP::ISA = qw/
 | 
					@SNMP::Info::Layer2::HP::ISA = qw/
 | 
				
			||||||
    SNMP::Info::Aggregate
 | 
					    SNMP::Info::Aggregate
 | 
				
			||||||
    SNMP::Info::Layer3 
 | 
					    SNMP::Info::Layer3 
 | 
				
			||||||
    SNMP::Info::MAU 
 | 
					    SNMP::Info::MAU 
 | 
				
			||||||
    SNMP::Info::LLDP
 | 
					 | 
				
			||||||
    SNMP::Info::CDP 
 | 
					    SNMP::Info::CDP 
 | 
				
			||||||
    Exporter
 | 
					    Exporter
 | 
				
			||||||
/;
 | 
					/;
 | 
				
			||||||
@@ -52,12 +50,11 @@ use SNMP::Info::Aggregate;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
    %SNMP::Info::MAU::MIBS,
 | 
					    %SNMP::Info::MAU::MIBS,
 | 
				
			||||||
    %SNMP::Info::LLDP::MIBS,
 | 
					 | 
				
			||||||
    %SNMP::Info::CDP::MIBS,
 | 
					    %SNMP::Info::CDP::MIBS,
 | 
				
			||||||
    %SNMP::Info::Aggregate::MIBS,
 | 
					    %SNMP::Info::Aggregate::MIBS,
 | 
				
			||||||
    'RFC1271-MIB'    => 'logDescription',
 | 
					    'RFC1271-MIB'    => 'logDescription',
 | 
				
			||||||
@@ -74,7 +71,6 @@ $VERSION = '3.20';
 | 
				
			|||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::GLOBALS,
 | 
					    %SNMP::Info::Layer3::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::MAU::GLOBALS,
 | 
					    %SNMP::Info::MAU::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::LLDP::GLOBALS,
 | 
					 | 
				
			||||||
    %SNMP::Info::CDP::GLOBALS,
 | 
					    %SNMP::Info::CDP::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::Aggregate::GLOBALS,
 | 
					    %SNMP::Info::Aggregate::GLOBALS,
 | 
				
			||||||
    'serial1'      => 'entPhysicalSerialNum.1',
 | 
					    'serial1'      => 'entPhysicalSerialNum.1',
 | 
				
			||||||
@@ -93,7 +89,6 @@ $VERSION = '3.20';
 | 
				
			|||||||
%FUNCS = (
 | 
					%FUNCS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::FUNCS,
 | 
					    %SNMP::Info::Layer3::FUNCS,
 | 
				
			||||||
    %SNMP::Info::MAU::FUNCS,
 | 
					    %SNMP::Info::MAU::FUNCS,
 | 
				
			||||||
    %SNMP::Info::LLDP::FUNCS,
 | 
					 | 
				
			||||||
    %SNMP::Info::CDP::FUNCS,
 | 
					    %SNMP::Info::CDP::FUNCS,
 | 
				
			||||||
    %SNMP::Info::Aggregate::FUNCS,
 | 
					    %SNMP::Info::Aggregate::FUNCS,
 | 
				
			||||||
    'i_type2'   => 'ifType',
 | 
					    'i_type2'   => 'ifType',
 | 
				
			||||||
@@ -119,7 +114,6 @@ $VERSION = '3.20';
 | 
				
			|||||||
    # Inherit all the built in munging
 | 
					    # Inherit all the built in munging
 | 
				
			||||||
    %SNMP::Info::Layer3::MUNGE,
 | 
					    %SNMP::Info::Layer3::MUNGE,
 | 
				
			||||||
    %SNMP::Info::MAU::MUNGE,
 | 
					    %SNMP::Info::MAU::MUNGE,
 | 
				
			||||||
    %SNMP::Info::LLDP::MUNGE,
 | 
					 | 
				
			||||||
    %SNMP::Info::CDP::MUNGE,
 | 
					    %SNMP::Info::CDP::MUNGE,
 | 
				
			||||||
    %SNMP::Info::Aggregate::MUNGE,
 | 
					    %SNMP::Info::Aggregate::MUNGE,
 | 
				
			||||||
    'c_id'   => \&munge_hp_c_id,
 | 
					    'c_id'   => \&munge_hp_c_id,
 | 
				
			||||||
@@ -131,6 +125,8 @@ $VERSION = '3.20';
 | 
				
			|||||||
%MODEL_MAP = (
 | 
					%MODEL_MAP = (
 | 
				
			||||||
    'J8131A' => 'WAP-420-WW',
 | 
					    'J8131A' => 'WAP-420-WW',
 | 
				
			||||||
    'J8130A' => 'WAP-420-NA',
 | 
					    'J8130A' => 'WAP-420-NA',
 | 
				
			||||||
 | 
					    'J9833A' => 'PS1810-8G',
 | 
				
			||||||
 | 
					    'J9834A' => 'PS1810-24G',
 | 
				
			||||||
    'J8133A' => 'AP520WL',
 | 
					    'J8133A' => 'AP520WL',
 | 
				
			||||||
    'J8680A' => '9408sl',
 | 
					    'J8680A' => '9408sl',
 | 
				
			||||||
    'J9091A' => '8212zl',
 | 
					    'J9091A' => '8212zl',
 | 
				
			||||||
@@ -145,8 +141,10 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'J8992A' => '6200yl-24G',
 | 
					    'J8992A' => '6200yl-24G',
 | 
				
			||||||
    'J4902A' => '6108',
 | 
					    'J4902A' => '6108',
 | 
				
			||||||
    'J8698A' => '5412zl',
 | 
					    'J8698A' => '5412zl',
 | 
				
			||||||
 | 
					    'J9851A' => '5412R-zl2',
 | 
				
			||||||
    'J8719A' => '5408yl',
 | 
					    'J8719A' => '5408yl',
 | 
				
			||||||
    'J8697A' => '5406zl',
 | 
					    'J8697A' => '5406zl',
 | 
				
			||||||
 | 
					    'J9850A' => '5406R-zl2',
 | 
				
			||||||
    'J8718A' => '5404yl',
 | 
					    'J8718A' => '5404yl',
 | 
				
			||||||
    'J4819A' => '5308XL',
 | 
					    'J4819A' => '5308XL',
 | 
				
			||||||
    'J4850A' => '5304XL',
 | 
					    'J4850A' => '5304XL',
 | 
				
			||||||
@@ -178,8 +176,12 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'J4815A' => '3324XL',
 | 
					    'J4815A' => '3324XL',
 | 
				
			||||||
    'J4851A' => '3124',
 | 
					    'J4851A' => '3124',
 | 
				
			||||||
    'J9729A' => '2920-48G-PoE+',
 | 
					    'J9729A' => '2920-48G-PoE+',
 | 
				
			||||||
 | 
					    'J9729A' => '2920-48G-PoE+',
 | 
				
			||||||
 | 
					    'J9728A' => '2920-48G',
 | 
				
			||||||
    'J9728A' => '2920-48G',
 | 
					    'J9728A' => '2920-48G',
 | 
				
			||||||
    'J9727A' => '2920-24G-PoE+',
 | 
					    'J9727A' => '2920-24G-PoE+',
 | 
				
			||||||
 | 
					    'J9727A' => '2920-24G-PoE+',
 | 
				
			||||||
 | 
					    'J9726A' => '2920-24G',
 | 
				
			||||||
    'J9726A' => '2920-24G',
 | 
					    'J9726A' => '2920-24G',
 | 
				
			||||||
    'J9562A' => '2915-8G-PoE',
 | 
					    'J9562A' => '2915-8G-PoE',
 | 
				
			||||||
    'J9148A' => '2910al-48G-PoE+',
 | 
					    'J9148A' => '2910al-48G-PoE+',
 | 
				
			||||||
@@ -192,30 +194,42 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'J4903A' => '2824',
 | 
					    'J4903A' => '2824',
 | 
				
			||||||
    'J9022A' => '2810-48G',
 | 
					    'J9022A' => '2810-48G',
 | 
				
			||||||
    'J9021A' => '2810-24G',
 | 
					    'J9021A' => '2810-24G',
 | 
				
			||||||
    'J4899C' => '2650C',
 | 
					 | 
				
			||||||
    'J8165A' => '2650-PWR',
 | 
					    'J8165A' => '2650-PWR',
 | 
				
			||||||
    'J4899B' => '2650-CR',
 | 
					    'J4899B' => '2650-CR',
 | 
				
			||||||
 | 
					    'J4899C' => '2650C',
 | 
				
			||||||
    'J4899A' => '2650',
 | 
					    'J4899A' => '2650',
 | 
				
			||||||
    'J4900C' => '2626C',
 | 
					 | 
				
			||||||
    'J8164A' => '2626-PWR',
 | 
					    'J8164A' => '2626-PWR',
 | 
				
			||||||
    'J4900B' => '2626-CR',
 | 
					    'J4900B' => '2626-CR',
 | 
				
			||||||
 | 
					    'J4900C' => '2626C',
 | 
				
			||||||
    'J4900A' => '2626',
 | 
					    'J4900A' => '2626',
 | 
				
			||||||
    'J9627A' => '2620-48-PoE+',
 | 
					    'J9627A' => '2620-48-PoE+',
 | 
				
			||||||
    'J9626A' => '2620-48',
 | 
					    'J9626A' => '2620-48',
 | 
				
			||||||
    'J9625A' => '2620-24-PoE+',
 | 
					 | 
				
			||||||
    'J9624A' => '2620-24-PPoE+',
 | 
					    'J9624A' => '2620-24-PPoE+',
 | 
				
			||||||
 | 
					    'J9625A' => '2620-24-PoE+',
 | 
				
			||||||
    'J9623A' => '2620-24',
 | 
					    'J9623A' => '2620-24',
 | 
				
			||||||
    'J9565A' => '2615-8-PoE',
 | 
					    'J9565A' => '2615-8-PoE',
 | 
				
			||||||
    'J9089A' => '2610-48-PWR',
 | 
					    'J9089A' => '2610-48-PWR',
 | 
				
			||||||
    'J9088A' => '2610-48',
 | 
					    'J9088A' => '2610-48',
 | 
				
			||||||
    'J9086A' => '2610-24/12PWR',
 | 
					 | 
				
			||||||
    'J9087A' => '2610-24-PWR',
 | 
					    'J9087A' => '2610-24-PWR',
 | 
				
			||||||
 | 
					    'J9086A' => '2610-24/12PWR',
 | 
				
			||||||
    'J9085A' => '2610-24',
 | 
					    'J9085A' => '2610-24',
 | 
				
			||||||
    'J8762A' => '2600-8-PWR',
 | 
					    'J8762A' => '2600-8-PWR',
 | 
				
			||||||
 | 
					    'J9780A' => '2530-8-PoE+',
 | 
				
			||||||
 | 
					    'J9774A' => '2530-8G-PoEP',
 | 
				
			||||||
 | 
					    'J9777A' => '2530-8G',
 | 
				
			||||||
 | 
					    'J9783A' => '2530-8',
 | 
				
			||||||
 | 
					    'J9778A' => '2530-48-PoE+',
 | 
				
			||||||
 | 
					    'J9853A' => '2530-48G-PoE+-2SFP+',
 | 
				
			||||||
    'J9772A' => '2530-48G-PoE+',
 | 
					    'J9772A' => '2530-48G-PoE+',
 | 
				
			||||||
 | 
					    'J9855A' => '2530-48G-2SFP+',
 | 
				
			||||||
    'J9775A' => '2530-48G',
 | 
					    'J9775A' => '2530-48G',
 | 
				
			||||||
 | 
					    'J9781A' => '2530-48',
 | 
				
			||||||
 | 
					    'J9779A' => '2530-24-PoE+',
 | 
				
			||||||
 | 
					    'J9854A' => '2530-24G-PoE+-2SFP+',
 | 
				
			||||||
    'J9773A' => '2530-24G-PoE+',
 | 
					    'J9773A' => '2530-24G-PoE+',
 | 
				
			||||||
 | 
					    'J9856A' => '2530-24G-2SFP+',
 | 
				
			||||||
    'J9776A' => '2530-24G',
 | 
					    'J9776A' => '2530-24G',
 | 
				
			||||||
 | 
					    'J9782A' => '2530-24',
 | 
				
			||||||
    'J4813A' => '2524',
 | 
					    'J4813A' => '2524',
 | 
				
			||||||
    'J9298A' => '2520G-8-PoE',
 | 
					    'J9298A' => '2520G-8-PoE',
 | 
				
			||||||
    'J9299A' => '2520G-24-PoE',
 | 
					    'J9299A' => '2520G-24-PoE',
 | 
				
			||||||
@@ -231,6 +245,8 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'J4817A' => '2312',
 | 
					    'J4817A' => '2312',
 | 
				
			||||||
    'J9449A' => '1810G-8',
 | 
					    'J9449A' => '1810G-8',
 | 
				
			||||||
    'J9450A' => '1810G-24',
 | 
					    'J9450A' => '1810G-24',
 | 
				
			||||||
 | 
					    'J9802A' => '1810-8G',
 | 
				
			||||||
 | 
					    'J9803A' => '1810-24G',
 | 
				
			||||||
    'J9029A' => '1800-8G',
 | 
					    'J9029A' => '1800-8G',
 | 
				
			||||||
    'J9028A' => '1800-24G',
 | 
					    'J9028A' => '1800-24G',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@@ -536,30 +552,6 @@ sub set_i_vlan_tagged {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
sub agg_ports { return agg_ports_ifstack(@_) }
 | 
					sub agg_ports { return agg_ports_ifstack(@_) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub qb_fw_vlan {
 | 
					 | 
				
			||||||
    my $hp = shift;
 | 
					 | 
				
			||||||
    my $partial = shift;
 | 
					 | 
				
			||||||
    my $qb_fw_vlan = $hp->SUPER::qb_fw_vlan($partial);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my $fdb_to_dot1q = {};
 | 
					 | 
				
			||||||
    my $fdb_id = $hp->dot1qVlanFdbId(0);
 | 
					 | 
				
			||||||
    foreach my $fdb_entry (keys %$fdb_id) {
 | 
					 | 
				
			||||||
        my ($timemark, $vlan_id) = split(/\./, $fdb_entry);
 | 
					 | 
				
			||||||
        $fdb_to_dot1q->{$fdb_id->{$fdb_entry}} = $vlan_id;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    foreach my $learn (keys %$qb_fw_vlan) {
 | 
					 | 
				
			||||||
        my $fdb_idx = $qb_fw_vlan->{$learn};
 | 
					 | 
				
			||||||
        if (exists $fdb_to_dot1q->{$fdb_idx}) {
 | 
					 | 
				
			||||||
            $qb_fw_vlan->{$learn} = $fdb_to_dot1q->{$fdb_idx}; 
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return $qb_fw_vlan;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -606,8 +598,6 @@ after determining a more specific class using the method above.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::Layer2
 | 
					=item SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::LLDP
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item SNMP::Info::MAU
 | 
					=item SNMP::Info::MAU
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
@@ -827,22 +817,12 @@ Power supplied by PoE ports, in milliwatts
 | 
				
			|||||||
Returns what version of STP the device is running.
 | 
					Returns what version of STP the device is running.
 | 
				
			||||||
(C<hpicfBridgeRstpForceVersion> with fallback to inherited stp_ver())
 | 
					(C<hpicfBridgeRstpForceVersion> with fallback to inherited stp_ver())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $hp->qb_fw_vlan()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns reference to hash of forwarding table entries VLAN ID
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(C<dot1qFdbId>), (C<rcBridgeTpFdbVlanId>)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Globals imported from SNMP::Info::Layer2
 | 
					=head2 Globals imported from SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
 | 
					See documentation in L<SNMP::Info::Layer2/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Globals imported from SNMP::Info::LLDP
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Globals imported from SNMP::Info::MAU
 | 
					=head2 Globals imported from SNMP::Info::MAU
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
 | 
					See documentation in L<SNMP::Info::MAU/"GLOBALS"> for details.
 | 
				
			||||||
@@ -894,10 +874,6 @@ ifIndex of the corresponding master ports.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
 | 
					See documentation in L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::LLDP
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::MAU
 | 
					=head2 Table Methods imported from SNMP::Info::MAU
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
 | 
					See documentation in L<SNMP::Info::MAU/"TABLE METHODS"> for details.
 | 
				
			||||||
@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -376,6 +376,20 @@ sub i_vlan_membership {
 | 
				
			|||||||
    return $i_vlan_membership;
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $hp  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $vlans = $hp->i_vlan($partial);
 | 
				
			||||||
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					    foreach my $port (keys %$vlans) {
 | 
				
			||||||
 | 
					        my $vlan = $vlans->{$port};
 | 
				
			||||||
 | 
					        push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub set_i_vlan {
 | 
					sub set_i_vlan {
 | 
				
			||||||
    my $hp = shift;
 | 
					    my $hp = shift;
 | 
				
			||||||
    my $rv;
 | 
					    my $rv;
 | 
				
			||||||
@@ -680,6 +694,12 @@ It is the union of tagged, untagged, and auto ports.
 | 
				
			|||||||
    print "Port: $port VLAN: $vlan\n";
 | 
					    print "Port: $port VLAN: $vlan\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $hp->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the untagged egress list for
 | 
				
			||||||
 | 
					the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $hp->v_index()
 | 
					=item $hp->v_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns VLAN IDs
 | 
					Returns VLAN IDs
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,        %SNMP::Info::Bridge::MIBS,
 | 
					    %SNMP::Info::MIBS,        %SNMP::Info::Bridge::MIBS,
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,
 | 
					    %SNMP::Info::MIBS,
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This will be filled in with the device's index into the EntPhysicalEntry
 | 
					# This will be filled in with the device's index into the EntPhysicalEntry
 | 
				
			||||||
# table by the serial() function.
 | 
					# table by the serial() function.
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,
 | 
					    %SNMP::Info::MIBS,
 | 
				
			||||||
							
								
								
									
										319
									
								
								lib/SNMP/Info/Layer2/Ubiquiti.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								lib/SNMP/Info/Layer2/Ubiquiti.pm
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,319 @@
 | 
				
			|||||||
 | 
					# SNMP::Info::Layer2::Ubiquiti
 | 
				
			||||||
 | 
					# $Id$
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package SNMP::Info::Layer2::Ubiquiti;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::IEEE802dot11;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer2;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer3;  # only used in sub mac()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::Ubiquiti::ISA
 | 
				
			||||||
 | 
					    = qw/SNMP::Info::IEEE802dot11 SNMP::Info::Layer2 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer2::Ubiquiti::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer2::MIBS,
 | 
				
			||||||
 | 
					    %SNMP::Info::IEEE802dot11::MIBS,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS
 | 
				
			||||||
 | 
					    = ( %SNMP::Info::Layer2::GLOBALS, %SNMP::Info::IEEE802dot11::GLOBALS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer2::FUNCS,
 | 
				
			||||||
 | 
					    %SNMP::Info::IEEE802dot11::FUNCS,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = ( %SNMP::Info::Layer2::MUNGE, %SNMP::Info::IEEE802dot11::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    my $ubnt = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $names = $ubnt->dot11_prod_name();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $iid ( keys %$names ) {
 | 
				
			||||||
 | 
					        my $prod = $names->{$iid};
 | 
				
			||||||
 | 
					        next unless defined $prod;
 | 
				
			||||||
 | 
					        # Product names that match AirOS products
 | 
				
			||||||
 | 
					                if((lc $prod) =~ /station/ or (lc $prod) =~ /beam/ or (lc $prod) =~ /grid/){
 | 
				
			||||||
 | 
					                        return 'AirOS';
 | 
				
			||||||
 | 
					                # Product names that match UAP
 | 
				
			||||||
 | 
					                }elsif((lc $prod) =~ /uap/){
 | 
				
			||||||
 | 
					                        return 'UniFi';
 | 
				
			||||||
 | 
					                }else{
 | 
				
			||||||
 | 
					                    # Continue below to find OS name
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## EdgeMAX OS (EdgeSwitch and EdgeRouter) name is first field split by space
 | 
				
			||||||
 | 
					    my $ver = $ubnt->description() || '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my @myver = split(/ /, $ver);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $myver[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os_ver {
 | 
				
			||||||
 | 
					    my $dot11 = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $versions = $dot11->dot11_prod_ver();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $iid ( keys %$versions ) {
 | 
				
			||||||
 | 
					        my $ver = $versions->{$iid};
 | 
				
			||||||
 | 
					        next unless defined $ver;
 | 
				
			||||||
 | 
					        return $ver;
 | 
				
			||||||
 | 
					        ## Not sure what this function does, it seems to be extraneous being in the same code block after a return statement?
 | 
				
			||||||
 | 
					        if ( $ver =~ /([\d\.]+)/ ) {
 | 
				
			||||||
 | 
					            return $1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    my $ver = $dot11->description() || '';
 | 
				
			||||||
 | 
					    if($ver =~ /^edgeswitch/){
 | 
				
			||||||
 | 
					        ## EdgeSwitch OS version is second field split by comma
 | 
				
			||||||
 | 
					        my @myver = split(/, /, $ver);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $myver[1];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## EdgeRouter OS version is second field split by space
 | 
				
			||||||
 | 
					    my @myver = split(/ /, $ver);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $myver[1];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'Ubiquiti Networks, Inc.';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub model {
 | 
				
			||||||
 | 
					    my $ubnt = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $names = $ubnt->dot11_prod_name();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $iid ( keys %$names ) {
 | 
				
			||||||
 | 
					        my $prod = $names->{$iid};
 | 
				
			||||||
 | 
					        next unless defined $prod;
 | 
				
			||||||
 | 
					        return $prod;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    my $desc = $ubnt->description() || '';
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    ## Pull Model from beginning of description, separated by comma (EdgeSwitch)
 | 
				
			||||||
 | 
					    if((lc $desc) =~ /^edgeswitch/){    
 | 
				
			||||||
 | 
					        my @mydesc = split(/, /, $desc);
 | 
				
			||||||
 | 
					        return $mydesc[0];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(!((lc $desc) =~ /edgeos/)){
 | 
				
			||||||
 | 
					        # Not sure what type of device this is to get Model
 | 
				
			||||||
 | 
					        # Wireless devices report dot11_prod_name
 | 
				
			||||||
 | 
					        # EdgeSwitch includes mode directly and edgeos logic is in else statement
 | 
				
			||||||
 | 
					        return ;
 | 
				
			||||||
 | 
					    }else{
 | 
				
			||||||
 | 
					        ## do some logic to determine ER model based on tech specs from ubnt:
 | 
				
			||||||
 | 
					        ## https://help.ubnt.com/hc/en-us/articles/219652227--EdgeRouter-Which-EdgeRouter-Should-I-Use-#tech%20specs
 | 
				
			||||||
 | 
					        ## Would be nice if UBNT simply adds the model string to their SNMP daemon directly
 | 
				
			||||||
 | 
					        my $ethCount = 0;
 | 
				
			||||||
 | 
					        my $switchCount = 0;
 | 
				
			||||||
 | 
					        #my $sfpCount = 0;
 | 
				
			||||||
 | 
					        #my $poeCount = 0;  
 | 
				
			||||||
 | 
					        my $memTotalReal = $ubnt->memTotalReal;   
 | 
				
			||||||
 | 
					        my $cpuLoad = $ubnt->hrProcessorLoad;
 | 
				
			||||||
 | 
					        my $cpuCount = 0;
 | 
				
			||||||
 | 
					        ## My perl is lacking. Not sure if there's a more efficient way to find the cpu count
 | 
				
			||||||
 | 
					        foreach my $iid ( keys %$cpuLoad ) {
 | 
				
			||||||
 | 
					            $cpuCount++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        my $ifDescs = $ubnt->ifDescr;
 | 
				
			||||||
 | 
					        foreach my $iid ( keys %$ifDescs ) {
 | 
				
			||||||
 | 
					            my $ifDesc = $ifDescs->{$iid};
 | 
				
			||||||
 | 
					            next unless defined $ifDesc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if((lc $ifDesc) =~ /^eth\d+$/){ # exclude vlan interfaces. Ex: eth1.5
 | 
				
			||||||
 | 
					                $ethCount++;
 | 
				
			||||||
 | 
					            }elsif((lc $ifDesc) =~ /^switch/){
 | 
				
			||||||
 | 
					                $switchCount++;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## If people have other models to further fine-tune this logic that would be great. 
 | 
				
			||||||
 | 
					        if($ethCount eq 9){
 | 
				
			||||||
 | 
					            ## Should be ER Infinity
 | 
				
			||||||
 | 
					            return "EdgeRouter Infinity"
 | 
				
			||||||
 | 
					        }if($ethCount eq 8){
 | 
				
			||||||
 | 
					            ## Could be ER-8 Pro, ER-8, or EP-R8
 | 
				
			||||||
 | 
					            return "EdgeRouter 8-Port"
 | 
				
			||||||
 | 
					        }elsif($ethCount eq 5 and $cpuCount eq 4){
 | 
				
			||||||
 | 
					            ## Could be ER-X or ER-X-SFP
 | 
				
			||||||
 | 
					            return "EdgeRouter X 5-Port"
 | 
				
			||||||
 | 
					        }elsif($ethCount eq 5){
 | 
				
			||||||
 | 
					            return "EdgeRouter PoE 5-Port"
 | 
				
			||||||
 | 
					        }elsif($ethCount eq 3 and $cpuCount eq 2){
 | 
				
			||||||
 | 
					            return "EdgeRouter LITE 3-Port"
 | 
				
			||||||
 | 
					        }else{
 | 
				
			||||||
 | 
					            ## failback string
 | 
				
			||||||
 | 
					            return "EdgeRouter eth-$ethCount switch-$switchCount mem-$memTotalReal cpuNum-$cpuCount";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## simply take the MAC and clean it up
 | 
				
			||||||
 | 
					sub serial {
 | 
				
			||||||
 | 
					    my $ubnt = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $serial = $ubnt->mac();
 | 
				
			||||||
 | 
					    if($serial){
 | 
				
			||||||
 | 
					        $serial =~ s/://g;
 | 
				
			||||||
 | 
					        return uc $serial;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return ;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## UBNT doesn't put the primary-mac interface at index 1
 | 
				
			||||||
 | 
					sub mac {
 | 
				
			||||||
 | 
					    my $ubnt = shift;
 | 
				
			||||||
 | 
					    my $ifDescs = $ubnt->ifDescr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $iid ( keys %$ifDescs ) {
 | 
				
			||||||
 | 
					        my $ifDesc = $ifDescs->{$iid};
 | 
				
			||||||
 | 
					        next unless defined $ifDesc;
 | 
				
			||||||
 | 
					        ## CPU Interface will have the primary MAC for EdgeSwitch
 | 
				
			||||||
 | 
					        ## eth0 will have primary MAC for linux-based UBNT devices
 | 
				
			||||||
 | 
					        if($ifDesc =~ /CPU/ or $ifDesc eq 'eth0'){
 | 
				
			||||||
 | 
					            my $mac = $ubnt->ifPhysAddress->{$iid};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # syntax stolen from sub munge_mac in SNMP::Info
 | 
				
			||||||
 | 
					            $mac = lc join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
 | 
				
			||||||
 | 
					            return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){5}[0-9A-F][0-9A-F]$/i;  
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # MAC malformed or missing
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer2::Ubiquiti - SNMP Interface to Ubiquiti Access Points
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 AUTHOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Max Kosmach
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you. 
 | 
				
			||||||
 | 
					 my $ubnt = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myswitch',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        ) 
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class = $ubnt->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Provides abstraction to the configuration information obtainable from
 | 
				
			||||||
 | 
					Ubiquiti Access Point through SNMP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For speed or debugging purposes you can call the subclass directly, but not
 | 
				
			||||||
 | 
					after determining a more specific class using the method above. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $ubnt = new SNMP::Info::Layer2::Ubiquiti(...);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::IEEE802dot11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Required MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					None.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer2/"Required MIBs"> for its MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::IEEE802dot11/"Required MIBs"> for its MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ubnt->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'Ubiquiti Networks, Inc.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ubnt->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the model extracted from C<dot11manufacturerProductName>, with failback to some complex logic for EdgeMax devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ubnt->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Serial Number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ubnt->mac()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bridge MAC address.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ubnt->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'Ubiquiti Networks, Inc.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ubnt->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the software version extracted from C<dot11manufacturerProductVersion>, with failback to description splitting for EdgeMax devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Global Methods imported from SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer2/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Global Methods imported from SNMP::Info::IEEE802dot11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::IEEE802dot11/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 TABLE METHODS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return tables of information in the form of a reference
 | 
				
			||||||
 | 
					to a hash.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::Layer2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer2/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::IEEE802dot11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::IEEE802dot11/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set for No CDP
 | 
					# Set for No CDP
 | 
				
			||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
 | 
					%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
 | 
				
			||||||
@@ -41,17 +41,19 @@ use SNMP::Info::Entity;
 | 
				
			|||||||
use SNMP::Info::PowerEthernet;
 | 
					use SNMP::Info::PowerEthernet;
 | 
				
			||||||
use SNMP::Info::IPv6;
 | 
					use SNMP::Info::IPv6;
 | 
				
			||||||
use SNMP::Info::AdslLine;
 | 
					use SNMP::Info::AdslLine;
 | 
				
			||||||
 | 
					use SNMP::Info::LLDP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SNMP::Info::Layer3::ISA = qw/
 | 
					@SNMP::Info::Layer3::ISA = qw/
 | 
				
			||||||
    SNMP::Info::PowerEthernet SNMP::Info::IPv6
 | 
					    SNMP::Info::PowerEthernet SNMP::Info::IPv6
 | 
				
			||||||
    SNMP::Info::Entity SNMP::Info::EtherLike
 | 
					    SNMP::Info::Entity SNMP::Info::EtherLike
 | 
				
			||||||
    SNMP::Info::Bridge SNMP::Info::AdslLine
 | 
					    SNMP::Info::Bridge SNMP::Info::AdslLine
 | 
				
			||||||
 | 
					    SNMP::Info::LLDP
 | 
				
			||||||
    SNMP::Info Exporter/;
 | 
					    SNMP::Info Exporter/;
 | 
				
			||||||
@SNMP::Info::Layer3::EXPORT_OK = qw//;
 | 
					@SNMP::Info::Layer3::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,
 | 
					    %SNMP::Info::MIBS,
 | 
				
			||||||
@@ -61,6 +63,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Entity::MIBS,
 | 
					    %SNMP::Info::Entity::MIBS,
 | 
				
			||||||
    %SNMP::Info::PowerEthernet::MIBS,
 | 
					    %SNMP::Info::PowerEthernet::MIBS,
 | 
				
			||||||
    %SNMP::Info::IPv6::MIBS,
 | 
					    %SNMP::Info::IPv6::MIBS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
    'IP-MIB'   => 'ipNetToMediaIfIndex',
 | 
					    'IP-MIB'   => 'ipNetToMediaIfIndex',
 | 
				
			||||||
    'OSPF-MIB' => 'ospfRouterId',
 | 
					    'OSPF-MIB' => 'ospfRouterId',
 | 
				
			||||||
    'BGP4-MIB' => 'bgpIdentifier',
 | 
					    'BGP4-MIB' => 'bgpIdentifier',
 | 
				
			||||||
@@ -76,6 +79,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Entity::GLOBALS,
 | 
					    %SNMP::Info::Entity::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::PowerEthernet::GLOBALS,
 | 
					    %SNMP::Info::PowerEthernet::GLOBALS,
 | 
				
			||||||
    %SNMP::Info::IPv6::GLOBALS,
 | 
					    %SNMP::Info::IPv6::GLOBALS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::GLOBALS,
 | 
				
			||||||
    'mac' => 'ifPhysAddress.1',
 | 
					    'mac' => 'ifPhysAddress.1',
 | 
				
			||||||
    'serial1' =>
 | 
					    'serial1' =>
 | 
				
			||||||
        '.1.3.6.1.4.1.9.3.6.3.0',    # OLD-CISCO-CHASSIS-MIB::chassisId.0
 | 
					        '.1.3.6.1.4.1.9.3.6.3.0',    # OLD-CISCO-CHASSIS-MIB::chassisId.0
 | 
				
			||||||
@@ -92,6 +96,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Entity::FUNCS,
 | 
					    %SNMP::Info::Entity::FUNCS,
 | 
				
			||||||
    %SNMP::Info::PowerEthernet::FUNCS,
 | 
					    %SNMP::Info::PowerEthernet::FUNCS,
 | 
				
			||||||
    %SNMP::Info::IPv6::FUNCS,
 | 
					    %SNMP::Info::IPv6::FUNCS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::FUNCS,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Obsolete Address Translation Table (ARP Cache)
 | 
					    # Obsolete Address Translation Table (ARP Cache)
 | 
				
			||||||
    'old_at_index'   => 'atIfIndex',
 | 
					    'old_at_index'   => 'atIfIndex',
 | 
				
			||||||
@@ -150,6 +155,7 @@ $VERSION = '3.20';
 | 
				
			|||||||
    %SNMP::Info::Entity::MUNGE,
 | 
					    %SNMP::Info::Entity::MUNGE,
 | 
				
			||||||
    %SNMP::Info::PowerEthernet::MUNGE,
 | 
					    %SNMP::Info::PowerEthernet::MUNGE,
 | 
				
			||||||
    %SNMP::Info::IPv6::MUNGE,
 | 
					    %SNMP::Info::IPv6::MUNGE,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MUNGE,
 | 
				
			||||||
    'old_at_paddr' => \&SNMP::Info::munge_mac,
 | 
					    'old_at_paddr' => \&SNMP::Info::munge_mac,
 | 
				
			||||||
    'at_paddr'     => \&SNMP::Info::munge_mac,
 | 
					    'at_paddr'     => \&SNMP::Info::munge_mac,
 | 
				
			||||||
    'n2p_paddr'    => \&SNMP::Info::munge_mac,
 | 
					    'n2p_paddr'    => \&SNMP::Info::munge_mac,
 | 
				
			||||||
@@ -185,34 +191,20 @@ sub root_ip {
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub i_ignore {
 | 
					 | 
				
			||||||
    my $l3      = shift;
 | 
					 | 
				
			||||||
    my $partial = shift;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my $interfaces = $l3->interfaces($partial) || {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    my %i_ignore;
 | 
					 | 
				
			||||||
    foreach my $if ( keys %$interfaces ) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # lo -> cisco aironet 350 loopback
 | 
					 | 
				
			||||||
        if ( $interfaces->{$if} =~ /(tunnel|loopback|\blo\b|null)/i ) {
 | 
					 | 
				
			||||||
            $i_ignore{$if}++;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return \%i_ignore;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sub serial {
 | 
					sub serial {
 | 
				
			||||||
    my $l3 = shift;
 | 
					    my $l3 = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $serial1 = $l3->serial1();
 | 
					    my $serial1 = $l3->serial1();
 | 
				
			||||||
    my $e_parent = $l3->e_parent() || {};
 | 
					    my $e_parent = $l3->e_parent() || {};
 | 
				
			||||||
 | 
					    my $e_class  = $l3->e_class() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach my $iid ( keys %$e_parent ) {
 | 
					    foreach my $iid ( keys %$e_parent ) {
 | 
				
			||||||
        my $parent = $e_parent->{$iid};
 | 
					        my $parent = $e_parent->{$iid};
 | 
				
			||||||
        if ( $parent eq '0' ) {
 | 
					        my $class = $e_class->{$iid} || '';
 | 
				
			||||||
 | 
					        # Only consider serial numbers for entries without a parent, or if they are of type "chassis"
 | 
				
			||||||
 | 
					        if ( $parent eq '0' or $class eq 'chassis') {
 | 
				
			||||||
            my $serial = $l3->e_serial($iid);
 | 
					            my $serial = $l3->e_serial($iid);
 | 
				
			||||||
            if ( $serial ) {
 | 
					            if ( $serial && $serial->{$iid} ) {
 | 
				
			||||||
                return $serial->{$iid};
 | 
					                return $serial->{$iid};
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
@@ -427,6 +419,8 @@ after determining a more specific class using the method above.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=item SNMP::Info::IPv6
 | 
					=item SNMP::Info::IPv6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Required MIBs
 | 
					=head2 Required MIBs
 | 
				
			||||||
@@ -455,6 +449,8 @@ See L<SNMP::Info::PowerEthernet/"Required MIBs"> for its MIB requirements.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See L<SNMP::Info::IPv6/"Required MIBs"> for its MIB requirements.
 | 
					See L<SNMP::Info::IPv6/"Required MIBs"> for its MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::LLDP/"Required MIBs"> for its MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 GLOBALS
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These are methods that return scalar value from SNMP
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
@@ -528,6 +524,18 @@ See L<SNMP::Info::EtherLike/"GLOBALS"> for details.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See L<SNMP::Info::Entity/"GLOBALS"> for details.
 | 
					See L<SNMP::Info::Entity/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Global Methods imported from SNMP::Info:PowerEthernet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::PowerEthernet/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Global Methods imported from SNMP::Info::IPv6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::IPv6/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Global Methods imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::LLDP/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head1 TABLE METHODS
 | 
					=head1 TABLE METHODS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These are methods that return tables of information in the form of a reference
 | 
					These are methods that return tables of information in the form of a reference
 | 
				
			||||||
@@ -544,12 +552,6 @@ name.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Only returns those iids that have a description listed in $l3->i_description()
 | 
					Only returns those iids that have a description listed in $l3->i_description()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $l3->i_ignore()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Returns reference to hash.  Creates a key for each IID that should be ignored.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Currently looks for tunnel,loopback,lo,null from $l3->interfaces()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
=item $l3->i_name()
 | 
					=item $l3->i_name()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns reference to hash of iid to human set name. 
 | 
					Returns reference to hash of iid to human set name. 
 | 
				
			||||||
@@ -803,4 +805,8 @@ See L<SNMP::Info::PowerEthernet/"TABLE METHODS"> for details.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See L<SNMP::Info::IPv6/"TABLE METHODS"> for details.
 | 
					See L<SNMP::Info::IPv6/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=cut
 | 
					=cut
 | 
				
			||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
					use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -385,6 +385,20 @@ sub i_vlan_membership {
 | 
				
			|||||||
    return $i_vlan_membership;
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $alteon  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $vlans = $alteon->i_vlan($partial);
 | 
				
			||||||
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					    foreach my $port (keys %$vlans) {
 | 
				
			||||||
 | 
					        my $vlan = $vlans->{$port};
 | 
				
			||||||
 | 
					        push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Bridge MIB does not map Bridge Port to ifIndex correctly on some code
 | 
					# Bridge MIB does not map Bridge Port to ifIndex correctly on some code
 | 
				
			||||||
# versions
 | 
					# versions
 | 
				
			||||||
sub bp_index {
 | 
					sub bp_index {
 | 
				
			||||||
@@ -574,6 +588,12 @@ IDs.  These are the VLANs which are members of the egress list for the port.
 | 
				
			|||||||
    print "Port: $port VLAN: $vlan\n";
 | 
					    print "Port: $port VLAN: $vlan\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $alteon->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the untagged egress list for
 | 
				
			||||||
 | 
					the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $alteon->v_index()
 | 
					=item $alteon->v_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns VLAN IDs
 | 
					Returns VLAN IDs
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE 
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE 
 | 
				
			||||||
            $int_include_vpn $fake_idx $type_class/;
 | 
					            $int_include_vpn $fake_idx $type_class/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
            %SNMP::Info::Layer3::MIBS,
 | 
					            %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -36,7 +36,7 @@ use Exporter;
 | 
				
			|||||||
use SNMP::Info::Layer3;
 | 
					use SNMP::Info::Layer3;
 | 
				
			||||||
use SNMP::Info::MAU;
 | 
					use SNMP::Info::MAU;
 | 
				
			||||||
use SNMP::Info::LLDP;
 | 
					use SNMP::Info::LLDP;
 | 
				
			||||||
use SNMP::Info::Aggregate;
 | 
					use SNMP::Info::Aggregate 'agg_ports_ifstack';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SNMP::Info::Layer3::Arista::ISA = qw/
 | 
					@SNMP::Info::Layer3::Arista::ISA = qw/
 | 
				
			||||||
    SNMP::Info::Aggregate
 | 
					    SNMP::Info::Aggregate
 | 
				
			||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -124,6 +124,8 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'aruba_ap_model'  => 'wlanAPModelName',
 | 
					    'aruba_ap_model'  => 'wlanAPModelName',
 | 
				
			||||||
    'aruba_ap_name'   => 'wlanAPName',
 | 
					    'aruba_ap_name'   => 'wlanAPName',
 | 
				
			||||||
    'aruba_ap_ip'     => 'wlanAPIpAddress',
 | 
					    'aruba_ap_ip'     => 'wlanAPIpAddress',
 | 
				
			||||||
 | 
					    'aruba_ap_hw_ver' => 'wlanAPHwVersion',
 | 
				
			||||||
 | 
					    'aruba_ap_sw_ver' => 'wlanAPSwVersion',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
 | 
					    # WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
 | 
				
			||||||
    'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
 | 
					    'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
 | 
				
			||||||
@@ -484,6 +486,7 @@ sub i_vlan {
 | 
				
			|||||||
	return $aruba->SUPER::i_vlan($partial)
 | 
						return $aruba->SUPER::i_vlan($partial)
 | 
				
			||||||
		if keys %{ $aruba->SUPER::i_vlan($partial) };
 | 
							if keys %{ $aruba->SUPER::i_vlan($partial) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# If we don't have Q-BRIDGE-MIB, we're a wireless controller
 | 
				
			||||||
	my $index = $aruba->aruba_if_idx();
 | 
						my $index = $aruba->aruba_if_idx();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ($partial) {
 | 
						if ($partial) {
 | 
				
			||||||
@@ -512,6 +515,7 @@ sub i_vlan_membership {
 | 
				
			|||||||
	return $aruba->SUPER::i_vlan_membership($partial)
 | 
						return $aruba->SUPER::i_vlan_membership($partial)
 | 
				
			||||||
		if keys %{ $aruba->SUPER::i_vlan_membership($partial) };
 | 
							if keys %{ $aruba->SUPER::i_vlan_membership($partial) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# If we don't have Q-BRIDGE-MIB, we're a wireless controller
 | 
				
			||||||
	my $essid_ssid = $aruba->aruba_ap_bssid_ssid();
 | 
						my $essid_ssid = $aruba->aruba_ap_bssid_ssid();
 | 
				
			||||||
	my $ssid_vlans = $aruba->aruba_ssid_vlan();
 | 
						my $ssid_vlans = $aruba->aruba_ssid_vlan();
 | 
				
			||||||
	my $if_vlans   = $aruba->aruba_if_vlan_member();
 | 
						my $if_vlans   = $aruba->aruba_if_vlan_member();
 | 
				
			||||||
@@ -555,6 +559,32 @@ sub i_vlan_membership {
 | 
				
			|||||||
	return $i_vlan_membership;
 | 
						return $i_vlan_membership;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
						my $aruba   = shift;
 | 
				
			||||||
 | 
						my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return $aruba->SUPER::i_vlan_membership_untagged($partial)
 | 
				
			||||||
 | 
							if keys %{ $aruba->SUPER::i_vlan_membership_untagged($partial) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# If we don't have Q-BRIDGE-MIB, we're a wireless controller
 | 
				
			||||||
 | 
						# It is unclear if native VLAN is transmitted untagged
 | 
				
			||||||
 | 
						# This assumes Cisco-like behavior on trunks that native VLAN is
 | 
				
			||||||
 | 
						# transmitted untagged, if this needs to be changed we will need to
 | 
				
			||||||
 | 
						# consider ifExtMode rather than just using i_vlan
 | 
				
			||||||
 | 
						my $if_membership = $aruba->i_vlan_membership();
 | 
				
			||||||
 | 
						my $if_ = $aruba->i_vlan();
 | 
				
			||||||
 | 
						my $if_mode   = $aruba->aruba_if_mode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $vlans = $aruba->i_vlan($partial);
 | 
				
			||||||
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					    foreach my $port (keys %$vlans) {
 | 
				
			||||||
 | 
					        my $vlan = $vlans->{$port};
 | 
				
			||||||
 | 
					        push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub i_80211channel {
 | 
					sub i_80211channel {
 | 
				
			||||||
    my $aruba   = shift;
 | 
					    my $aruba   = shift;
 | 
				
			||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
@@ -995,8 +1025,9 @@ sub e_type {
 | 
				
			|||||||
sub e_hwver {
 | 
					sub e_hwver {
 | 
				
			||||||
    my $aruba = shift;
 | 
					    my $aruba = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $ap_hw   = $aruba->aruba_card_hw()   || {};
 | 
					    my $ap_hw     = $aruba->aruba_card_hw()   || {};
 | 
				
			||||||
    my $ap_fpga = $aruba->aruba_card_fpga() || {};
 | 
					    my $ap_fpga   = $aruba->aruba_card_fpga() || {};
 | 
				
			||||||
 | 
					    my $ap_hw_ver = $aruba->aruba_ap_hw_ver() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my %e_hwver;
 | 
					    my %e_hwver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1008,9 +1039,36 @@ sub e_hwver {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	$e_hwver{$iid} = "$hw $fpga";
 | 
						$e_hwver{$iid} = "$hw $fpga";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # APs
 | 
				
			||||||
 | 
					    foreach my $idx ( keys %$ap_hw_ver ) {
 | 
				
			||||||
 | 
						my $hw_ver = $ap_hw_ver->{$idx};
 | 
				
			||||||
 | 
						next unless defined $hw_ver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$e_hwver{$idx} = "$hw_ver";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return \%e_hwver;
 | 
					    return \%e_hwver;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub e_swver {
 | 
				
			||||||
 | 
					    my $aruba = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $ap_sw_ver = $aruba->aruba_ap_hw_ver() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my %e_swver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # APs
 | 
				
			||||||
 | 
					    foreach my $idx ( keys %$ap_sw_ver ) {
 | 
				
			||||||
 | 
						my $sw_ver = $ap_sw_ver->{$idx};
 | 
				
			||||||
 | 
						next unless defined $sw_ver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						$e_swver{$idx} = "$sw_ver";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return \%e_swver;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub e_vendor {
 | 
					sub e_vendor {
 | 
				
			||||||
    my $aruba = shift;
 | 
					    my $aruba = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1586,6 +1644,12 @@ Returns reference to map of IIDs to VLAN ID of the interface.
 | 
				
			|||||||
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
IDs.  These are the VLANs for which the port is a member.
 | 
					IDs.  These are the VLANs for which the port is a member.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $aruba->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the untagged egress list for
 | 
				
			||||||
 | 
					the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $aruba->bp_index()
 | 
					=item $aruba->bp_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Augments the bridge MIB by returning reference to a hash containing the
 | 
					Augments the bridge MIB by returning reference to a hash containing the
 | 
				
			||||||
@@ -1648,6 +1712,10 @@ Returns reference to hash.  Key: IID, Value: Type of component.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Returns reference to hash.  Key: IID, Value: Hardware revision.
 | 
					Returns reference to hash.  Key: IID, Value: Hardware revision.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $aruba->e_swver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash.  Key: IID, Value: Software revision.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $aruba->e_vendor()
 | 
					=item $aruba->e_vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns reference to hash.  Key: IID, Value: aruba.
 | 
					Returns reference to hash.  Key: IID, Value: aruba.
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
 | 
				
			|||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
 | 
				
			||||||
    %MODID_MAP %PROCID_MAP/;
 | 
					    %MODID_MAP %PROCID_MAP/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS,
 | 
					    %SNMP::Info::MIBS,
 | 
				
			||||||
@@ -732,6 +732,8 @@ sub i_vlan {
 | 
				
			|||||||
    return \%i_vlan;
 | 
					    return \%i_vlan;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_pvid { goto &i_vlan }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub root_ip {
 | 
					sub root_ip {
 | 
				
			||||||
    my $bayrs = shift;
 | 
					    my $bayrs = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1549,6 +1551,10 @@ interfaces.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Returns reference to hash.  Maps port VLAN ID to IIDs.
 | 
					Returns reference to hash.  Maps port VLAN ID to IIDs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $bayrs->i_pvid()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash.  Maps port VLAN ID to IIDs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Pseudo F<ENTITY-MIB> information
 | 
					=head2 Pseudo F<ENTITY-MIB> information
 | 
				
			||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
 | 
					@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# NOTE: Order creates precedence
 | 
					# NOTE: Order creates precedence
 | 
				
			||||||
#       Example: v_name exists in Bridge.pm and CiscoVTP.pm
 | 
					#       Example: v_name exists in Bridge.pm and CiscoVTP.pm
 | 
				
			||||||
@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MAU::MIBS,
 | 
					    %SNMP::Info::MAU::MIBS,
 | 
				
			||||||
@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# NOTE: Order creates precedence
 | 
					# NOTE: Order creates precedence
 | 
				
			||||||
#       Example: v_name exists in Bridge.pm and CiscoVTP.pm
 | 
					#       Example: v_name exists in Bridge.pm and CiscoVTP.pm
 | 
				
			||||||
							
								
								
									
										330
									
								
								lib/SNMP/Info/Layer3/CheckPoint.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										330
									
								
								lib/SNMP/Info/Layer3/CheckPoint.pm
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,330 @@
 | 
				
			|||||||
 | 
					# SNMP::Info::Layer3::CheckPoint
 | 
				
			||||||
 | 
					# $Id$
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright (c) 2008 Bill Fenner
 | 
				
			||||||
 | 
					# All rights reserved.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					# modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     * Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					#       this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					#     * Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					#       notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					#       documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					#     * Neither the name of the University of California, Santa Cruz nor the
 | 
				
			||||||
 | 
					#       names of its contributors may be used to endorse or promote products
 | 
				
			||||||
 | 
					#       derived from this software without specific prior written permission.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
				
			||||||
 | 
					# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
				
			||||||
 | 
					# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					# POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package SNMP::Info::Layer3::CheckPoint;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer3;
 | 
				
			||||||
 | 
					use SNMP::Info::LLDP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer3::CheckPoint::ISA       = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer3::CheckPoint::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
 | 
					    'CHECKPOINT-MIB'      => 'fwProduct',
 | 
				
			||||||
 | 
					    'UCD-SNMP-MIB'        => 'versionTag',
 | 
				
			||||||
 | 
					    'NET-SNMP-TC'         => 'netSnmpAgentOIDs',
 | 
				
			||||||
 | 
					    'NET-SNMP-EXTEND-MIB' => 'nsExtendNumEntries',
 | 
				
			||||||
 | 
					    'HOST-RESOURCES-MIB'  => 'hrSystem',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::GLOBALS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::GLOBALS,
 | 
				
			||||||
 | 
					    'netsnmp_vers'   => 'versionTag',
 | 
				
			||||||
 | 
					    'hrSystemUptime' => 'hrSystemUptime',
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::FUNCS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::FUNCS,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Net-SNMP Extend table that could but customize to add a the CheckPoint version
 | 
				
			||||||
 | 
					    'extend_output_table' => 'nsExtendOutputFull',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::MUNGE,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MUNGE,
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'checkpoint';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub model {
 | 
				
			||||||
 | 
					    my $ckp = shift;
 | 
				
			||||||
 | 
					    my $id = $ckp->id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $model = &SNMP::translateObj($id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (defined $model) {
 | 
				
			||||||
 | 
					        $model =~ s/^checkPoint//;
 | 
				
			||||||
 | 
					        return $model;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        return $id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os {
 | 
				
			||||||
 | 
					    return 'checkpoint';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub os_ver {
 | 
				
			||||||
 | 
					    my $ckp = shift;
 | 
				
			||||||
 | 
					    my $extend_table = $ckp->extend_output_table() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $descr   = $ckp->description();
 | 
				
			||||||
 | 
					    my $vers    = $ckp->netsnmp_vers();
 | 
				
			||||||
 | 
					    my $os_ver  = undef;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $ex (keys %$extend_table) {
 | 
				
			||||||
 | 
					        (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
 | 
				
			||||||
 | 
					        if ($name eq 'ckpVersion') {
 | 
				
			||||||
 | 
					            return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/);
 | 
				
			||||||
 | 
					            last;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ );
 | 
				
			||||||
 | 
					    if ($vers) {
 | 
				
			||||||
 | 
					        $os_ver = "???" unless defined($os_ver);
 | 
				
			||||||
 | 
					        $os_ver .= " / Net-SNMP " . $vers;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $os_ver;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub serial {
 | 
				
			||||||
 | 
					    my $ckp = shift;
 | 
				
			||||||
 | 
					    my $extend_table = $ckp->extend_output_table() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $ex (keys %$extend_table) {
 | 
				
			||||||
 | 
					        (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
 | 
				
			||||||
 | 
					        if ($name eq 'ckpAsset') {
 | 
				
			||||||
 | 
					            return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/);
 | 
				
			||||||
 | 
					            last;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return '';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub layers {
 | 
				
			||||||
 | 
					    return '01001100';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# sysUptime gives us the time since the SNMP daemon has restarted,
 | 
				
			||||||
 | 
					# so return the system uptime since that's probably what the user
 | 
				
			||||||
 | 
					# wants.  (Caution: this could cause trouble if using
 | 
				
			||||||
 | 
					# sysUptime-based discontinuity timers or other TimeStamp
 | 
				
			||||||
 | 
					# objects.
 | 
				
			||||||
 | 
					sub uptime {
 | 
				
			||||||
 | 
					    my $ckp = shift;
 | 
				
			||||||
 | 
					    my $uptime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $uptime = $ckp->hrSystemUptime();
 | 
				
			||||||
 | 
					    return $uptime if defined $uptime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $ckp->SUPER::uptime();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_ignore {
 | 
				
			||||||
 | 
					    my $l3      = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $interfaces = $l3->interfaces($partial) || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my %i_ignore;
 | 
				
			||||||
 | 
					    foreach my $if ( keys %$interfaces ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # lo0 etc
 | 
				
			||||||
 | 
					        if ( $interfaces->{$if} =~ /\blo\d*\b/i ) {
 | 
				
			||||||
 | 
					            $i_ignore{$if}++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return \%i_ignore;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer3::CheckPoint - SNMP Interface to CheckPoint Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 AUTHORS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ambroise Rosset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you. 
 | 
				
			||||||
 | 
					 my $ckp = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myrouter',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        ) 
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class      = $ckp->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Generic Net-SNMP devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 WARNING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To correctly and completelly work, you should add the following line in the file C</etc/snmp/snmpd.local.conf> on each of your CheckPoint devices:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Netdisco SNMP configuration
 | 
				
			||||||
 | 
					 extend  ckpVersion /opt/CPsuite-R77/fw1/bin/fw ver
 | 
				
			||||||
 | 
					 extend  ckpAsset /bin/clish -c 'show asset all'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Required MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item F<UCD-SNMP-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item F<NET-SNMP-TC>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item F<HOST-RESOURCES-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item Inherited Classes' MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer3> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::LLDP> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'checkpoint'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the model type of the CheckPoint device (Based on the sysObjectOID translation).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->os()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the OS extracted from C<sysDescr>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->os_ver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the software version extracted from C<sysDescr>, along
 | 
				
			||||||
 | 
					with the Net-SNMP version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->uptime()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the system uptime instead of the agent uptime.
 | 
				
			||||||
 | 
					NOTE: discontinuity timers and other Time Stamp based objects
 | 
				
			||||||
 | 
					are based on agent uptime, so use orig_uptime().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the serial number of the device if the SNMP server is configured as indicated previously.
 | 
				
			||||||
 | 
					Return '' in other case.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->layers()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return '01001100'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Globals imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Globals imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 TABLE ENTRIES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return tables of information in the form of a reference
 | 
				
			||||||
 | 
					to a hash.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Overrides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $ckp->i_ignore()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash.  Increments value of IID if port is to be ignored.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ignores loopback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NOTES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In order to cause SNMP::Info to classify your device into this class, it
 | 
				
			||||||
 | 
					may be necessary to put a configuration line into your F<snmpd.conf>
 | 
				
			||||||
 | 
					similar to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sysobjectid .1.3.6.1.4.1.8072.3.2.N
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					where N is the object ID for your OS from the C<NET-SNMP-TC> MIB (or
 | 
				
			||||||
 | 
					255 if not listed).  Some Net-SNMP installations default to an
 | 
				
			||||||
 | 
					incorrect return value for C<system.sysObjectId>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In order to recognize a Net-SNMP device as Layer3, it may be necessary
 | 
				
			||||||
 | 
					to put a configuration line similar to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sysservices 76
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					in your F<snmpd.conf>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
@@ -55,7 +55,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -136,6 +136,13 @@ sub i_vlan {
 | 
				
			|||||||
    return $i_vlan;
 | 
					    return $i_vlan;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub cisco_comm_indexing { 
 | 
				
			||||||
 | 
					    my $cisco = shift;
 | 
				
			||||||
 | 
					    # If we get a VTP version, it's *extremely* likely that the device needs community based indexing
 | 
				
			||||||
 | 
					    my $vtp = $cisco->vtp_version() || '0';
 | 
				
			||||||
 | 
					    return ($vtp ne '0');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -237,6 +244,11 @@ These are methods that return scalar value from SNMP
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
(C<cEigrpAsRouterId>)
 | 
					(C<cEigrpAsRouterId>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $switch->cisco_comm_indexing()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 1 when the device is likely to need vlan indexing.
 | 
				
			||||||
 | 
					Determined by checking C<vtpVersion>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Global Methods imported from SNMP::Info::CiscoVTP
 | 
					=head2 Global Methods imported from SNMP::Info::CiscoVTP
 | 
				
			||||||
@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
 | 
					%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,8 +73,8 @@ sub b_mac {
 | 
				
			|||||||
    foreach my $i ( keys %$macs ) {
 | 
					    foreach my $i ( keys %$macs ) {
 | 
				
			||||||
        my $mac = $macs->{$i};
 | 
					        my $mac = $macs->{$i};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # don't catch the bad macs with zeroed OUI
 | 
					        # don't catch the bad macs with bogus OUI
 | 
				
			||||||
        if ( $mac !~ m/(0{1,2}:){3}/ ) {
 | 
					        if ( $mac !~ m/(0{1,2}:){2}(00|01)/ ) {
 | 
				
			||||||
            push( @macs, $mac );
 | 
					            push( @macs, $mac );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        @macs = sort(@macs);
 | 
					        @macs = sort(@macs);
 | 
				
			||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
 | 
					%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::Cisco::MIBS,
 | 
					    %SNMP::Info::Layer3::Cisco::MIBS,
 | 
				
			||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
 | 
					    %SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
 | 
				
			||||||
							
								
								
									
										213
									
								
								lib/SNMP/Info/Layer3/DLink.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										213
									
								
								lib/SNMP/Info/Layer3/DLink.pm
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,213 @@
 | 
				
			|||||||
 | 
					package SNMP::Info::Layer3::DLink;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use strict;
 | 
				
			||||||
 | 
					use Exporter;
 | 
				
			||||||
 | 
					use SNMP::Info::Layer3;
 | 
				
			||||||
 | 
					use SNMP::Info::LLDP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SNMP::Info::Layer3::DLink::ISA       = qw/SNMP::Info::LLDP SNMP::Info::Layer3 Exporter/;
 | 
				
			||||||
 | 
					@SNMP::Info::Layer3::DLink::EXPORT_OK = qw//;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MIBS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
 | 
					    'DLINK-ID-REC-MIB' => 'dlink',
 | 
				
			||||||
 | 
					    'SWPRIMGMT-DES3200-MIB' => 'dlink-des3200SeriesProd',
 | 
				
			||||||
 | 
					    'SWPRIMGMT-DES30XXP-MIB' => 'dlink-des30xxproductProd',
 | 
				
			||||||
 | 
					    'SWPRIMGMT-DES1228ME-MIB' => 'dlink-des1228MEproductProd',
 | 
				
			||||||
 | 
					    'SWDES3528-52PRIMGMT-MIB' => 'dlink-Des3500Series', 
 | 
				
			||||||
 | 
					    'DES-1210-28-AX' => 'des-1210-28ax',
 | 
				
			||||||
 | 
					    'DES-1210-10MEbx' => 'des-1210-10mebx',
 | 
				
			||||||
 | 
					    'DES-1210-26MEbx' => 'des-1210-26mebx',
 | 
				
			||||||
 | 
					    'DES-1210-52-BX' => 'des-1210-52bx',
 | 
				
			||||||
 | 
					    'DES-1210-52-CX' => 'des-1210-52-cx',
 | 
				
			||||||
 | 
					    'DGS-1210-24-AX' => 'dgs-1210-24ax',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%GLOBALS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::GLOBALS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::GLOBALS,
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%FUNCS = (
 | 
				
			||||||
 | 
					    %SNMP::Info::Layer3::FUNCS,
 | 
				
			||||||
 | 
					    %SNMP::Info::LLDP::FUNCS,
 | 
				
			||||||
 | 
					    'dlink_fw' => 'probeSoftwareRev',
 | 
				
			||||||
 | 
					    'dlink_hw' => 'probeHardwareRev',
 | 
				
			||||||
 | 
					    'dlink_stp_i_root_port' => 'MSTP_MIB__swMSTPInstRootPort',
 | 
				
			||||||
 | 
					    'dlink_serial_no' => 'AGENT_GENERAL_MIB__agentSerialNumber',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%MUNGE = ( %SNMP::Info::Layer3::MUNGE, %SNMP::Info::LLDP::MUNGE, );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub model {
 | 
				
			||||||
 | 
					    my $dlink=shift;
 | 
				
			||||||
 | 
					    my $id = $dlink->id();
 | 
				
			||||||
 | 
					    my $model = &SNMP::translateObj($id);
 | 
				
			||||||
 | 
					    return $id unless defined $model;
 | 
				
			||||||
 | 
					    if (defined $model && $model !~ /dlink-products/) {
 | 
				
			||||||
 | 
						return $model;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					    	#If don't have a device MIB
 | 
				
			||||||
 | 
						return $dlink->description();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub vendor {
 | 
				
			||||||
 | 
					    return 'dlink';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub serial {
 | 
				
			||||||
 | 
					    my $dlink = shift;
 | 
				
			||||||
 | 
					    my $model = $dlink->model();
 | 
				
			||||||
 | 
					    my $id = $dlink->id();
 | 
				
			||||||
 | 
					    my $serial;
 | 
				
			||||||
 | 
					    if ($model =~ /1210/) {
 | 
				
			||||||
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
 | 
						$serial->{0} = $dlink->session()->get($id.'.1.30.0');
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						$serial = $dlink->dlink_serial_no();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $serial->{0} if ( defined $serial->{0} and $serial->{0} !~ /^\s*$/ and $serial->{0} !~ 'NOSUCHOBJECT' );
 | 
				
			||||||
 | 
					    return $dlink->SUPER::serial();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub fwver {
 | 
				
			||||||
 | 
					    my $dlink=shift;
 | 
				
			||||||
 | 
					    my $model = $dlink->model();
 | 
				
			||||||
 | 
					    my $id = $dlink->id();
 | 
				
			||||||
 | 
					    my $fw;
 | 
				
			||||||
 | 
					    if ($model =~ /1210/) {
 | 
				
			||||||
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
 | 
						$fw->{0} = $dlink->session()->get($id.'.1.3.0');
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						$fw = $dlink->dlink_fw();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $fw->{0} if ( defined $fw->{0} and $fw->{0} !~ /^\s*$/ and $fw->{0} !~ 'NOSUCHOBJECT');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub hwver {
 | 
				
			||||||
 | 
					    my $dlink=shift;
 | 
				
			||||||
 | 
					    my $model = $dlink->model();
 | 
				
			||||||
 | 
					    my $id = $dlink->id();
 | 
				
			||||||
 | 
					    my $hw;
 | 
				
			||||||
 | 
					    if ($model =~ /1210/) {
 | 
				
			||||||
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
 | 
						$hw->{0} = $dlink->session()->get($id.'.1.2.0');
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						$hw = $dlink->dlink_hw();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $hw->{0} if ( defined $hw->{0} and $hw->{0} !~ /^\s*$/ and $hw->{0} !~ 'NOSUCHOBJECT');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub stp_i_root_port {
 | 
				
			||||||
 | 
					    my $dlink=shift;
 | 
				
			||||||
 | 
					    my $model = $dlink->model();
 | 
				
			||||||
 | 
					    my $id = $dlink->id();
 | 
				
			||||||
 | 
					    my $stp_i_root_port;
 | 
				
			||||||
 | 
					    if ($model =~ /1210-(?:10|26)/) {
 | 
				
			||||||
 | 
						#Due to the zoo of MIB from DLink by 1210 series
 | 
				
			||||||
 | 
						$stp_i_root_port->{0} = $dlink->session()->get($id.'.6.1.13.0');
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						$stp_i_root_port = $dlink->dlink_stp_i_root_port();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $stp_i_root_port if ( defined $stp_i_root_port->{0} and $stp_i_root_port->{0} !~ /^\s*$/ and $stp_i_root_port->{0} !~ 'NOSUCHOBJECT');
 | 
				
			||||||
 | 
					    return $dlink->SUPER::stp_i_root_port();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1;
 | 
				
			||||||
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 NAME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SNMP::Info::Layer3::DLink - SNMP Interface to DLink Devices
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 SYNOPSIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 # Let SNMP::Info determine the correct subclass for you. 
 | 
				
			||||||
 | 
					 my $dlink = new SNMP::Info(
 | 
				
			||||||
 | 
					                          AutoSpecify => 1,
 | 
				
			||||||
 | 
					                          Debug       => 1,
 | 
				
			||||||
 | 
					                          DestHost    => 'myrouter',
 | 
				
			||||||
 | 
					                          Community   => 'public',
 | 
				
			||||||
 | 
					                          Version     => 2
 | 
				
			||||||
 | 
					                        ) 
 | 
				
			||||||
 | 
					    or die "Can't connect to DestHost.\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 my $class      = $dlink->class();
 | 
				
			||||||
 | 
					 print "SNMP::Info determined this device to fall under subclass : $class\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subclass for Vyatta Devices running dlink.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item SNMP::Info::LLDP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Inherited Classes' MIBs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See L<SNMP::Info::LLDP/"Required MIBs"> for its own MIB requirements.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 GLOBALS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are methods that return scalar value from SNMP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dlink->model()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the ID or else description.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dlink->vendor()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns 'dlink'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dlink->serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns serial number.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dlink->fwver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the firmware version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dlink->hwver()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the hardware version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dlink->stp_i_root_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the STP root port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Globals imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP/"GLOBALS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head1 TABLE METHODS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Table Methods imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See documentation in L<SNMP::Info::LLDP/"TABLE METHODS"> for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=cut
 | 
				
			||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
@@ -153,6 +153,48 @@ sub serial {
 | 
				
			|||||||
    return $dell->SUPER::serial();
 | 
					    return $dell->SUPER::serial();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# check all fans, and report overall status
 | 
				
			||||||
 | 
					sub fan {
 | 
				
			||||||
 | 
					    my $dell = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $fan   = $dell->dell_fan_desc()  || {};
 | 
				
			||||||
 | 
					    my $state = $dell->dell_fan_state() || {};
 | 
				
			||||||
 | 
					    my @messages = ();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $k (keys %$fan) {
 | 
				
			||||||
 | 
					        next if $state->{$k} and $state->{$k} eq 'normal';
 | 
				
			||||||
 | 
					        push @messages, "$fan->{$k}: $state->{$k}";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    push @messages, ((scalar keys %$fan). " fans OK")
 | 
				
			||||||
 | 
					      if scalar @messages == 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return (join ", ", @messages);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub _ps_status {
 | 
				
			||||||
 | 
					    my ($dell, $unit) = @_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $status = 'unknown';
 | 
				
			||||||
 | 
					    return $status if !defined $unit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $desc  = $dell->dell_pwr_desc()  || {};
 | 
				
			||||||
 | 
					    my $state = $dell->dell_pwr_state() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    foreach my $k (keys %$desc) {
 | 
				
			||||||
 | 
					        next unless $desc->{$k} and $desc->{$k} eq "ps1_unit$unit";
 | 
				
			||||||
 | 
					        return ($state->{$k} || $status);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $status;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub ps1_type { return 'internalRedundant' }
 | 
				
			||||||
 | 
					sub ps2_type { return 'internalRedundant' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub ps1_status { return (shift)->_ps_status(1) }
 | 
				
			||||||
 | 
					sub ps2_status { return (shift)->_ps_status(2) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub interfaces {
 | 
					sub interfaces {
 | 
				
			||||||
    my $dell    = shift;
 | 
					    my $dell    = shift;
 | 
				
			||||||
    my $partial = shift;
 | 
					    my $partial = shift;
 | 
				
			||||||
@@ -213,6 +255,10 @@ sub _vendor {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# dot1qTpFdbTable uses dot1qVlanIndex rather than dot1qFdbId as index,
 | 
				
			||||||
 | 
					# so pretend we don't have the mapping
 | 
				
			||||||
 | 
					sub qb_fdb_index {return}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -308,6 +354,26 @@ id().  Defaults to 'dlink'.
 | 
				
			|||||||
Returns 'dell', 'dlink', or 'ibm' based upon the IANA enterprise number in
 | 
					Returns 'dell', 'dlink', or 'ibm' based upon the IANA enterprise number in
 | 
				
			||||||
id().  Defaults to 'dlink'.
 | 
					id().  Defaults to 'dlink'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dell->fan()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the status of all fans from the F<Dell-Vendor-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dell->ps1_type()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the type of the first power supply from the F<Dell-Vendor-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dell->ps2_type()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the type of the second power supply from the F<Dell-Vendor-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dell->ps1_status()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the status of the first power supply from the F<Dell-Vendor-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dell->ps2_status()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return the status of the second power supply from the F<Dell-Vendor-MIB>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Overrides
 | 
					=head2 Overrides
 | 
				
			||||||
@@ -387,6 +453,10 @@ sometimes not unique.
 | 
				
			|||||||
Returns reference to hash of iid to current link administrative duplex
 | 
					Returns reference to hash of iid to current link administrative duplex
 | 
				
			||||||
setting.
 | 
					setting.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $dell->qb_fdb_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns nothing to work around incorrect indexing of C<dot1qTpFdbTable>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::Layer3
 | 
					=head2 Table Methods imported from SNMP::Info::Layer3
 | 
				
			||||||
@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
 | 
				
			||||||
@@ -149,11 +149,47 @@ sub i_duplex_admin {
 | 
				
			|||||||
    return $enterasys->mau_i_duplex_admin($partial);
 | 
					    return $enterasys->mau_i_duplex_admin($partial);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#  LLDP table timefilter implementation continuously increments when walked
 | 
					#  TimeFilter implementation continuously increments when walked
 | 
				
			||||||
#  and we may never reach the end of the table.  This behavior can be
 | 
					#  and we may never reach the end of the table.  This behavior can be
 | 
				
			||||||
#  modified with the "set snmp timefilter break disable" command,
 | 
					#  modified with the "set snmp timefilter break disable" command,
 | 
				
			||||||
#  unfortunately it is not the default.  Query with a partial value of zero
 | 
					#  unfortunately it is not the default.  Query with a partial value of zero
 | 
				
			||||||
#  which means no time filter.
 | 
					#  which means no time filter for tables with and index containing a
 | 
				
			||||||
 | 
					#  TimeFilter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub qb_fdb_index {
 | 
				
			||||||
 | 
					    my $bridge  = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $qb_fdb_ids = $bridge->dot1qVlanFdbId(0) || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Strip the TimeFilter
 | 
				
			||||||
 | 
					    my $vl_fdb_index = {};
 | 
				
			||||||
 | 
					    for my $fdb_entry (keys(%$qb_fdb_ids)) {
 | 
				
			||||||
 | 
					        (my $vlan = $fdb_entry) =~ s/^\d+\.//;
 | 
				
			||||||
 | 
					        $vl_fdb_index->{$qb_fdb_ids->{$fdb_entry}} = $vlan;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $vl_fdb_index;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership {
 | 
				
			||||||
 | 
					    my $bridge  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # dot1qVlanCurrentTable TimeFilter index
 | 
				
			||||||
 | 
					    my $v_ports = $bridge->qb_cv_egress(0) || $bridge->qb_v_egress();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $bridge->_vlan_hoa($v_ports, $partial);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $bridge  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # dot1qVlanCurrentTable TimeFilter index
 | 
				
			||||||
 | 
					    my $v_ports = $bridge->qb_cv_untagged(0) || $bridge->qb_v_untagged();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $bridge->_vlan_hoa($v_ports, $partial);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub lldp_ip {
 | 
					sub lldp_ip {
 | 
				
			||||||
    my $enterasys = shift;
 | 
					    my $enterasys = shift;
 | 
				
			||||||
@@ -359,9 +395,9 @@ L<SNMP::Info::MAU/"TABLE METHODS">.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Link Layer Discovery Protocol (LLDP) Overrides
 | 
					=head2 Time Filter Table Index Overrides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The LLDP table time filter implementation continuously increments when
 | 
					The time filter C<TimeFilter> implementation continuously increments when
 | 
				
			||||||
walked and we may never reach the end of the table.  This behavior can be
 | 
					walked and we may never reach the end of the table.  This behavior can be
 | 
				
			||||||
modified with the C<"set snmp timefilter break disable"> command,
 | 
					modified with the C<"set snmp timefilter break disable"> command,
 | 
				
			||||||
unfortunately it is not the default.  These methods are overridden to
 | 
					unfortunately it is not the default.  These methods are overridden to
 | 
				
			||||||
@@ -369,6 +405,12 @@ supply a partial value of zero which means no time filter.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=over
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $enterasys->qb_fdb_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $enterasys->i_vlan_membership()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $enterasys->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $enterasys->lldp_if()
 | 
					=item $enterasys->lldp_if()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $enterasys->lldp_ip()
 | 
					=item $enterasys->lldp_ip()
 | 
				
			||||||
@@ -46,18 +46,19 @@ use SNMP::Info::EDP;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
					use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$VERSION = '3.20';
 | 
					$VERSION = '3.44';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MIBS = (
 | 
					%MIBS = (
 | 
				
			||||||
    %SNMP::Info::Layer3::MIBS,
 | 
					    %SNMP::Info::Layer3::MIBS,
 | 
				
			||||||
    %SNMP::Info::MAU::MIBS,
 | 
					    %SNMP::Info::MAU::MIBS,
 | 
				
			||||||
    %SNMP::Info::LLDP::MIBS,
 | 
					    %SNMP::Info::LLDP::MIBS,
 | 
				
			||||||
    %SNMP::Info::EDP::MIBS,
 | 
					    %SNMP::Info::EDP::MIBS,
 | 
				
			||||||
    'EXTREME-BASE-MIB'   => 'extremeAgent',
 | 
					    'EXTREME-BASE-MIB'           => 'extremeAgent',
 | 
				
			||||||
    'EXTREME-SYSTEM-MIB' => 'extremeSystem',
 | 
					    'EXTREME-SYSTEM-MIB'         => 'extremeSystem',
 | 
				
			||||||
    'EXTREME-FDB-MIB'    => 'extremeSystem',
 | 
					    'EXTREME-FDB-MIB'            => 'extremeFdbMacFdbMacAddress',
 | 
				
			||||||
    'EXTREME-VLAN-MIB'   => 'extremeVlan',
 | 
					    'EXTREME-VLAN-MIB'           => 'extremeVlan',
 | 
				
			||||||
    'EXTREME-POE-MIB'    => 'extremePethSystemAdminEnable',
 | 
					    'EXTREME-POE-MIB'            => 'extremePethSystemAdminEnable',
 | 
				
			||||||
 | 
					    'EXTREME-STP-EXTENSIONS-MIB' => 'extremeStpDomainBridgeId',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%GLOBALS = (
 | 
					%GLOBALS = (
 | 
				
			||||||
@@ -97,6 +98,20 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'peth_power_watts'  => 'extremePethSlotPowerLimit',
 | 
					    'peth_power_watts'  => 'extremePethSlotPowerLimit',
 | 
				
			||||||
    # EXTREME-POE-MIB::extremePethPsePortTable
 | 
					    # EXTREME-POE-MIB::extremePethPsePortTable
 | 
				
			||||||
    'peth_port_power'   => 'extremePethPortMeasuredPower',
 | 
					    'peth_port_power'   => 'extremePethPortMeasuredPower',
 | 
				
			||||||
 | 
					    # EXTREME-STP-EXTENSIONS-MIB::extremeStpDomainTable
 | 
				
			||||||
 | 
					    'stp_i_time'      => 'extremeStpDomainTimeSinceTopologyChange',
 | 
				
			||||||
 | 
					    'stp_i_ntop'      => 'extremeStpDomainTopChanges',
 | 
				
			||||||
 | 
					    'stp_i_root'      => 'extremeStpDomainDesignatedRoot',
 | 
				
			||||||
 | 
					    'stp_i_root_port' => 'extremeStpDomainRootPortIfIndex',
 | 
				
			||||||
 | 
					    'stp_i_priority'  => 'extremeStpDomainBridgePriority',
 | 
				
			||||||
 | 
					    'ex_stp_i_mac'    => 'extremeStpDomainBridgeId',
 | 
				
			||||||
 | 
					    # EXTREME-STP-EXTENSIONS-MIB::extremeStpPortTable
 | 
				
			||||||
 | 
					    'stp_p_priority' => 'extremeStpPortPortPriority',
 | 
				
			||||||
 | 
					    'stp_p_state'    => 'extremeStpPortPortState',
 | 
				
			||||||
 | 
					    'stp_p_cost'     => 'extremeStpPortPathCost',
 | 
				
			||||||
 | 
					    'stp_p_root'     => 'extremeStpPortDesignatedRoot',
 | 
				
			||||||
 | 
					    'stp_p_bridge'   => 'extremeStpPortDesignatedBridge',
 | 
				
			||||||
 | 
					    'stp_p_port'     => 'extremeStpPortDesignatedPort',
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%MUNGE = (
 | 
					%MUNGE = (
 | 
				
			||||||
@@ -114,6 +129,11 @@ $VERSION = '3.20';
 | 
				
			|||||||
    'fan_state'        => \&munge_true_ok,
 | 
					    'fan_state'        => \&munge_true_ok,
 | 
				
			||||||
    'ex_vlan_untagged' => \&SNMP::Info::munge_port_list,
 | 
					    'ex_vlan_untagged' => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
    'ex_vlan_tagged'   => \&SNMP::Info::munge_port_list,
 | 
					    'ex_vlan_tagged'   => \&SNMP::Info::munge_port_list,
 | 
				
			||||||
 | 
					    'ex_stp_i_mac'     => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
 | 
					    'stp_i_root'       => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
 | 
					    'stp_p_root'       => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
 | 
					    'stp_p_bridge'     => \&SNMP::Info::munge_prio_mac,
 | 
				
			||||||
 | 
					    'stp_p_port'       => \&SNMP::Info::munge_prio_port,
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Method OverRides
 | 
					# Method OverRides
 | 
				
			||||||
@@ -542,6 +562,78 @@ sub _extremeware_i_vlan_membership {
 | 
				
			|||||||
    return \%i_vlan_membership;
 | 
					    return \%i_vlan_membership;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $extreme = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Some devices support Q-Bridge, if so short circuit and return it
 | 
				
			||||||
 | 
					    my $q_bridge = $extreme->SUPER::i_vlan_membership_untagged($partial);
 | 
				
			||||||
 | 
					    return $q_bridge if (ref {} eq ref $q_bridge and scalar keys %$q_bridge);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Next we try extremeVlanOpaqueTable
 | 
				
			||||||
 | 
					    my $xos = $extreme->_xos_i_vlan_membership_untagged($partial);
 | 
				
			||||||
 | 
					    return $xos if (ref {} eq ref $xos and scalar keys %$xos);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Try older ifStack method
 | 
				
			||||||
 | 
					    my $extremeware = $extreme->_extremeware_i_vlan_membership_untagged($partial);
 | 
				
			||||||
 | 
					    return $extremeware if (ref {} eq ref $extremeware and scalar keys %$extremeware);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub _xos_i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $extreme = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $index   = $extreme->i_index();
 | 
				
			||||||
 | 
					    my $vlans   = $extreme->ex_vlan_id();
 | 
				
			||||||
 | 
					    my $slotx   = $extreme->_slot_factor() || 1000;
 | 
				
			||||||
 | 
					    my $u_ports = $extreme->ex_vlan_untagged() || {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					    foreach my $idx ( keys %$u_ports ) {
 | 
				
			||||||
 | 
					        next unless ( defined $u_ports->{$idx} );
 | 
				
			||||||
 | 
					        my $u_portlist = $u_ports->{$idx};
 | 
				
			||||||
 | 
					        my $ret        = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        my ( $vlan_if, $slot ) = $idx =~ /^(\d+)\.(\d+)/;
 | 
				
			||||||
 | 
					        my $vlan = $vlans->{$vlan_if} || '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        foreach my $portlist ( $u_portlist ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # Convert portlist bit array to bp_index array
 | 
				
			||||||
 | 
					            for ( my $i = 0; $i <= $#$portlist; $i++ ) {
 | 
				
			||||||
 | 
					                push( @{$ret}, ( $slotx * $slot + $i + 1 ) )
 | 
				
			||||||
 | 
					                    if ( @$portlist[$i] );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #Create HoA ifIndex -> VLAN array
 | 
				
			||||||
 | 
					        foreach my $port ( @{$ret} ) {
 | 
				
			||||||
 | 
					            my $ifindex = $index->{$port};
 | 
				
			||||||
 | 
					            next unless ( defined($ifindex) );    # shouldn't happen
 | 
				
			||||||
 | 
					            next if ( defined $partial and $ifindex !~ /^$partial$/ );
 | 
				
			||||||
 | 
					            push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Assuming Cisco-like trunk behavior that native VLAN is transmitted untagged
 | 
				
			||||||
 | 
					sub _extremeware_i_vlan_membership_untagged {
 | 
				
			||||||
 | 
					    my $extreme  = shift;
 | 
				
			||||||
 | 
					    my $partial = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $vlans = $extreme->_extremeware_i_vlan($partial);
 | 
				
			||||||
 | 
					    my $i_vlan_membership = {};
 | 
				
			||||||
 | 
					    foreach my $port (keys %$vlans) {
 | 
				
			||||||
 | 
					        my $vlan = $vlans->{$port};
 | 
				
			||||||
 | 
					        push( @{ $i_vlan_membership->{$port} }, $vlan );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $i_vlan_membership;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# VLAN management.
 | 
					# VLAN management.
 | 
				
			||||||
# See extreme-vlan.mib for a detailed description of
 | 
					# See extreme-vlan.mib for a detailed description of
 | 
				
			||||||
# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
 | 
					# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
 | 
				
			||||||
@@ -711,6 +803,75 @@ sub lldp_if {
 | 
				
			|||||||
    return \%lldp_if;
 | 
					    return \%lldp_if;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# extremeStpDomainStpdInstance not accessible, so we need to extract from iid
 | 
				
			||||||
 | 
					sub stp_i_id {
 | 
				
			||||||
 | 
					    my $extreme  = shift;
 | 
				
			||||||
 | 
					    my $partial  = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $stp_i_roots = $extreme->stp_i_root($partial);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my %stp_i_id;
 | 
				
			||||||
 | 
					    foreach my $iid ( keys %$stp_i_roots ) {
 | 
				
			||||||
 | 
					        $stp_i_id{$iid} = $iid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return \%stp_i_id;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# extremeStpDomainBridgeId returns priority and mac,
 | 
				
			||||||
 | 
					# for cross class compatibility we just need mac
 | 
				
			||||||
 | 
					sub stp_i_mac {
 | 
				
			||||||
 | 
					    my $extreme  = shift;
 | 
				
			||||||
 | 
					    my $partial  = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $stp_i_bids = $extreme->ex_stp_i_mac($partial);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my %stp_i_mac;
 | 
				
			||||||
 | 
					    foreach my $iid ( keys %$stp_i_bids ) {
 | 
				
			||||||
 | 
					        my $mac = $stp_i_bids->{$iid};
 | 
				
			||||||
 | 
					        next unless $mac;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        $mac =~ s/^([0-9A-F][0-9A-F]:){2}//;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        $stp_i_mac{$iid} = $mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return \%stp_i_mac;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Break up the extremeStpPortEntry INDEX into Stpd Instance and IfIndex.
 | 
				
			||||||
 | 
					sub _ex_stpport_index {
 | 
				
			||||||
 | 
					    my $idx    = shift;
 | 
				
			||||||
 | 
					    my ( $id, $ifindex ) = split( /\./, $idx);
 | 
				
			||||||
 | 
					    return ($id, $ifindex);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# extremeStpPortPortIfIndex not-accessible, extract from iid
 | 
				
			||||||
 | 
					sub stp_p_id {
 | 
				
			||||||
 | 
					    my $extreme  = shift;
 | 
				
			||||||
 | 
					    my $partial  = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $stp_port = $extreme->stp_p_root($partial);
 | 
				
			||||||
 | 
					    my $stp_p_id  = {};
 | 
				
			||||||
 | 
					    foreach my $idx ( keys %$stp_port ) {
 | 
				
			||||||
 | 
					        my ( $id, $ifindex ) = _ex_stpport_index($idx);
 | 
				
			||||||
 | 
					        $stp_p_id->{$idx} = $ifindex;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $stp_p_id;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# extremeStpDomainStpdInstance not-accessible, extract from iid
 | 
				
			||||||
 | 
					sub stp_p_stg_id {
 | 
				
			||||||
 | 
					    my $extreme  = shift;
 | 
				
			||||||
 | 
					    my $partial  = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $stp_port = $extreme->stp_p_root($partial);
 | 
				
			||||||
 | 
					    my $stp_p_stg_id  = {};
 | 
				
			||||||
 | 
					    foreach my $idx ( keys %$stp_port ) {
 | 
				
			||||||
 | 
					        my ( $id, $ifindex ) = _ex_stpport_index($idx);
 | 
				
			||||||
 | 
					        $stp_p_stg_id->{$idx} = $id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $stp_p_stg_id;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1;
 | 
					1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__END__
 | 
					__END__
 | 
				
			||||||
@@ -927,6 +1088,12 @@ IDs.  These are the VLANs which are members of the egress list for the port.
 | 
				
			|||||||
    print "Port: $port VLAN: $vlan\n";
 | 
					    print "Port: $port VLAN: $vlan\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->i_vlan_membership_untagged()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
 | 
				
			||||||
 | 
					IDs.  These are the VLANs which are members of the untagged egress list for
 | 
				
			||||||
 | 
					the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=item $extreme->v_index()
 | 
					=item $extreme->v_index()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Returns VLAN IDs
 | 
					Returns VLAN IDs
 | 
				
			||||||
@@ -959,6 +1126,98 @@ The configured maximum amount of in-line power available to the slot.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
=back
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Spanning Tree Instance Globals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_mac()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the MAC extracted from (C<extremeStpDomainBridgeId>).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_id()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the unique identifier of the STP domain.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainStpdInstance>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns time since last topology change detected. (100ths/second)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainTimeSinceTopologyChange>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns time since last topology change detected. (100ths/second)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainTimeSinceTopologyChange>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the total number of topology changes detected.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainTopChanges>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_root()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns root of STP.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainDesignatedRoot>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_root_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the port number of the port that offers the lowest cost path
 | 
				
			||||||
 | 
					to the root bridge.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainRootPortIfIndex>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_i_priority()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Returns the port number of the port that offers the lowest cost path
 | 
				
			||||||
 | 
					to the root bridge.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainBridgePriority>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=head2 Spanning Tree Protocol Port Table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_id()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortPortIfIndex>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_stg_id()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpDomainStpdInstance>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_priority()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortPortPriority>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_state()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortPortState>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_cost()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortPathCost>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_root()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortDesignatedRoot>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_bridge()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortDesignatedBridge>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=item $extreme->stp_p_port()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(C<extremeStpPortDesignatedPort>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=back
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=head2 Table Methods imported from SNMP::Info::Layer3
 | 
					=head2 Table Methods imported from SNMP::Info::Layer3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
 | 
					See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user