diff --git a/agent_based/juniper_bgp_peer.py b/agent_based/juniper_bgp_peer.py index 091b82c737feb77cc98f68c4e9b1693689e0df58..6b9075adc4ab8dde23d8faa0254d7ea252274ac0 100644 --- a/agent_based/juniper_bgp_peer.py +++ b/agent_based/juniper_bgp_peer.py @@ -13,6 +13,8 @@ # # 2022-04-30: code cleanup/streamlining # 2022-05-09: added item to BgpPeer class, this is used in the discovery function +# 2022-05-11: changed bgp_get_peer_entry to get proper parameters instead of Nontransparent list +# added remote_as to BgpPeerItem # import copy @@ -78,31 +80,36 @@ def parse_juniper_bgp_peer(string_table: List[StringByteTable]) -> Optional[Dict peer_prefixes[index] = [prefixes] for entry in jnxBgpM2Peer: - # extract values and adjust format - oid_end = entry[0] - entry.pop(0) - PeerRemoteAddrType = entry[0] - entry.pop(0) - PeerIndex = entry[0] - entry.pop(0) - PeerRoutingInstance = entry[0] - entry.pop(0) - - remote_address = bgp_render_ip_address(PeerRemoteAddrType, entry[0]) - entry[0] = remote_address - - bgp_peer = bgp_get_peer_entry(entry) - - prefixes = peer_prefixes.get(PeerIndex, []) + oid_end, peer_state, admin_state, remote_addr_type, remote_addr, remote_as, peer_index, routing_instance, \ + in_updates, out_updates, in_messages, out_messages, fsm_established_transitions, fsm_established_time, \ + in_update_elapsed_time = entry + + remote_addr = bgp_render_ip_address(remote_addr_type, remote_addr) + + bgp_peer = bgp_get_peer_entry( + remote_addr=remote_addr, + peer_state=peer_state, + admin_state=admin_state, + remote_as=remote_as, + in_updates=in_updates, + out_updates=out_updates, + in_messages=in_messages, + out_messages=out_messages, + fsm_established_transitions=fsm_established_transitions, + fsm_established_time=fsm_established_time, + in_update_elapsed_time=in_update_elapsed_time + ) + + prefixes = peer_prefixes.get(peer_index, []) for address_family in prefixes: address_family_str = juniper_afi_safi_mapping(address_family.afi, address_family.safi) - item = f'{remote_address} {address_family_str}' + item = f'{remote_addr} {address_family_str}' # ToDo: add vrf name routing_instance = '' - if PeerRoutingInstance != '0': - routing_instance = f'VR {PeerRoutingInstance}' + if routing_instance != '0': + routing_instance = f'VR {routing_instance}' item = f'{item} {routing_instance}' - peer_table[item] = copy.deepcopy(bgp_peer[remote_address]) + peer_table[item] = copy.deepcopy(bgp_peer[remote_addr]) peer_table[item].accepted_prefixes = address_family.accepted_prefixes peer_table[item].metric_count += address_family.metric_count peer_table[item].metric_rate += address_family.metric_rate @@ -115,19 +122,19 @@ register.snmp_section( name='juniper_bgp_peer', parse_function=parse_juniper_bgp_peer, parsed_section_name='bgp_peer', - supersedes=['bgp_peer'], + supersedes=['bgp_peer', 'juniper_bgp_state'], fetch=[ SNMPTree( base='.1.3.6.1.4.1.2636.5.1.1.2', # BGP4-V2-MIB-JUNIPER::jnxBgpM2Peer oids=[ OIDEnd(), + '1.1.1.2', # jnxBgpM2PeerState + '1.1.1.3', # jnxBgpM2PeerStatus (admin status(?)) '1.1.1.10', # jnxBgpM2PeerRemoteAddrType + OIDBytes('1.1.1.11'), # jnxBgpM2PeerRemoteAddr + '1.1.1.13', # jnxBgpM2PeerRemoteAs '1.1.1.14', # jnxBgpM2PeerIndex '1.1.1.15', # jnxBgpM2PeerRoutingInstance - # needs to be in this order to match bgp_peer - OIDBytes('1.1.1.11'), # jnxBgpM2PeerRemoteAddr - '1.1.1.2', # jnxBgpM2PeerState - '1.1.1.3', # jnxBgpM2PeerStatus (admin status(?)) '6.1.1.1', # jnxBgpM2PeerInUpdates '6.1.1.2', # jnxBgpM2PeerOutUpdates '6.1.1.3', # jnxBgpM2PeerInTotalMessages @@ -158,3 +165,4 @@ register.snmp_section( # 1.3.6.1.4.1.2636.5.1.1.2.8.1.1.1 # stop(1) # start(2) + diff --git a/juniper_bgp_peer.mkp b/juniper_bgp_peer.mkp index 80d8d3d3a4a88fa2dffc3d9d5ffcf4adeb9507d1..a4a706cc892543ca62903f05a77d2b0d84468da2 100644 Binary files a/juniper_bgp_peer.mkp and b/juniper_bgp_peer.mkp differ diff --git a/packages/juniper_bgp_peer b/packages/juniper_bgp_peer index dd8fe81cd0b60d793f901e861ca3e11f9e70ef47..bfe2b5e39f1071cf1c22d51c1488cf0f8444c16b 100644 --- a/packages/juniper_bgp_peer +++ b/packages/juniper_bgp_peer @@ -14,7 +14,7 @@ 'name': 'juniper_bgp_peer', 'num_files': 3, 'title': 'Juniper BGP peer', - 'version': '20220509.v.0.0.4', + 'version': '20220511.v.0.0.5', 'version.min_required': '2.0.0', 'version.packaged': '2021.09.20', 'version.usable_until': None} \ No newline at end of file