Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit 86d0d100 authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

update project

parent c25d7c51
No related branches found
No related tags found
No related merge requests found
......@@ -51,8 +51,10 @@
# 2022.04.22: moved inventory plugin to inv_cisco_bgp_peer.py
# 2022-04-29: added info if device is admin prefix limit capable (device_admin_limit)
# 2022-04-30: code cleanup/streamlining
# 2022-05-09: added item to BgpPeer class, this is used in the discovery function
#
import copy
from typing import List, Dict, Optional, Tuple
from dataclasses import dataclass
......@@ -95,7 +97,6 @@ class CiscoPrefixes:
def parse_cisco_bgp_peer(string_table: List[StringTable]) -> Dict[str, BgpPeer]:
cbgpPeer2Entry, cbgpPeer2AddrFamily = string_table
peer_table = {}
peer_prefixes = {}
# create dictionary by peer address and list of entries per address family
for entry in cbgpPeer2AddrFamily:
......@@ -140,7 +141,8 @@ def parse_cisco_bgp_peer(string_table: List[StringTable]) -> Dict[str, BgpPeer]:
if prefixes:
for address_family in prefixes:
item = f'{remote_address} {address_family.address_family}'
peer_table[item] = bgp_peer[remote_address]
temp_bgp_peer = copy.deepcopy(bgp_peer)
peer_table[item] = temp_bgp_peer[remote_address]
peer_table[item].accepted_prefixes = address_family.accepted_prefixes
peer_table[item].prefix_admin_limit = address_family.prefix_admin_limit
peer_table[item].prefix_clear_threshold = address_family.prefix_clear_threshold
......@@ -148,6 +150,7 @@ def parse_cisco_bgp_peer(string_table: List[StringTable]) -> Dict[str, BgpPeer]:
peer_table[item].device_admin_limit = True
peer_table[item].metric_rate += address_family.metric_count
peer_table[item].metric_rate += address_family.metric_rate
peer_table[item].item['address_family'] = address_family.address_family
else:
peer_table.update(bgp_peer)
......@@ -211,13 +214,20 @@ def parse_cisco_bgp_peer_3(string_table: StringByteTable) -> Optional[Dict[str,
peer_table = {}
for entry in string_table:
if entry[0] == '1': # IPv4 address
entry[1] = '.'.join(f'{m}' for m in entry[1])
remote_address = '.'.join(f'{m}' for m in entry[1])
entry[1] = remote_address
routing_instance = None
if entry[2] != 'default':
entry[1] += f' vrf {entry[2]}'
routing_instance = f'vrf {entry[2]}'
# entry[1] += f' {routing_instance}'
entry.pop(2) # remove vrf name
entry.pop(0) # remove remote address type
bgp_peer = bgp_get_peer_entry(entry)
if bgp_peer:
bgp_peer[remote_address].item['routing_instance'] = routing_instance
if routing_instance:
item = f'{remote_address} {routing_instance}'
bgp_peer = {item: bgp_peer[remote_address]}
peer_table.update(bgp_peer)
return peer_table
......
No preview for this file type
......@@ -26,7 +26,7 @@
'name': 'cisco_bgp_peer',
'num_files': 3,
'title': 'Cisco BGP Peer',
'version': '20220422.v.0.6',
'version': '20220509.v.0.7',
'version.min_required': '2.0.0',
'version.packaged': '2021.09.20',
'version.usable_until': None}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment