From 2757e8617e577dbb930b4a206d8cc84f15f0bf69 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Sun, 11 Sep 2022 21:57:16 +0200
Subject: [PATCH] update project

---
 agent_based/bgp_peer.py       |  97 ++++++++++++++++++----------------
 agent_based/inv_bgp_peer.py   |   2 +-
 agent_based/utils/bgp_peer.py |  26 +++++----
 bgp_peer.mkp                  | Bin 15223 -> 15376 bytes
 packages/bgp_peer             |   2 +-
 5 files changed, 69 insertions(+), 58 deletions(-)

diff --git a/agent_based/bgp_peer.py b/agent_based/bgp_peer.py
index a36a35f..58c4bbe 100644
--- a/agent_based/bgp_peer.py
+++ b/agent_based/bgp_peer.py
@@ -5,7 +5,7 @@
 
 # Author: thl-cmk[at]outlook[dot]com
 # URL   : https://thl-cmk.hopto.org
-# Date  : 2021-10-25
+# Date  : 2021-08-20
 
 # based on the BGP peer plugin by Thomas Wollner (tw@wollner-net.de)
 #
@@ -23,7 +23,8 @@
 # 2022-05-11: changed bgp_get_peer_entry to get proper parameters instead of Nontransparent list
 #             added remote_as to BgpPeerItem
 # 2022-09-05: added missing wato parameters to register.check_plugin check_default_parameters
-#
+# 2022-09-10: made more reliable on limited data (fsm_established_time and admin_state) (THX to martin[dot]pechstein[at]posteo[dot]de)
+# 2022-09-11: optimized internal flow: > alias > not found > admin down > peer state > ...
 
 # Example Agent Output:
 # BGP4-MIB
@@ -129,19 +130,23 @@ def check_bgp_peer(item, params, section: Dict[str, BgpPeer]) -> CheckResult:
         yield Result(state=State(peer_not_found_state), summary='Item not found in SNMP data')
         return
 
-    if not peer.admin_state == 2:  # not start
-        yield Result(state=State(params['admindown']), notice=f'Admin state: {peer.peer_statestr}')
-    else:
-        if peer.peer_state == 6:  # established
-            yield from check_levels(
-                value=peer.fsm_established_time,
-                label='Uptime',
-                levels_lower=params['minuptime'],
-                render_func=render.timespan,
-                metric_name='bgp_peer_fsmestablishedtime',
-            )
+    if peer.admin_state == 1:  # shutdown
+        yield Result(state=State(params['admindown']), summary=f'Admin state: {peer.peer_statestr}')
+        return
+
+    yield Result(state=State(neighborstate.get(str(peer.peer_state))), notice=f'Peer state: {peer.peer_statestr}')
+
+    if not peer.peer_state == 6:  # not established
+        return
 
-        yield Result(state=State(neighborstate.get(str(peer.peer_state))), notice=f'Peer state: {peer.peer_statestr}')
+    if peer.fsm_established_time:  # fms_time not None
+        yield from check_levels(
+            value=peer.fsm_established_time,
+            label='Uptime',
+            levels_lower=params['minuptime'],
+            render_func=render.timespan,
+            metric_name='bgp_peer_fsmestablishedtime',
+        )
 
     if peer.peer_unavail_reason != 0:  # huawei peer unavailable state
         yield Result(state=State.CRIT, notice=F'Peer unavailable reason: {peer.peer_unavail_reason_str}')
@@ -152,39 +157,37 @@ def check_bgp_peer(item, params, section: Dict[str, BgpPeer]) -> CheckResult:
             notice='Prefix limit/warn threshold not configured on the device.',
         )
 
-    if peer.admin_state == 2:  # no perfdata if admin shutdown
-        acceptedprefixes = peer.accepted_prefixes
-        prefixadminlimit = peer.prefix_admin_limit
-        prefixthreshold = peer.prefix_threshold
-        warnthreshold = None
-
-        if prefixadminlimit is not None and prefixthreshold is not None:
-            warnthreshold = int(
-                prefixadminlimit / 100.0 * prefixthreshold)  # use float (100.0) to get xx.xx in division
-        if acceptedprefixes is not None and peer.peer_state == 6:  # peer established and prefixes accepted
-            yield from check_levels(
-                value=acceptedprefixes,
-                metric_name='bgp_peer_acceptedprefixes',
-                levels_upper=params.get('accepted_prefixes_upper_levels', (warnthreshold, prefixadminlimit)),
-                levels_lower=params.get('accepted_prefixes_lower_levels'),
-                label='Prefixes accepted',
-                render_func=lambda v: f'{v}'
-            )
-
-        now_time = time.time()
-        value_store = get_value_store()
-
-        for entry in peer.metric_rate:
-            key, value = entry
-            try:
-                value = get_rate(value_store, f'{key}', now_time, value, raise_overflow=True)
-            except GetRateError:
-                value = 0
-            yield Metric(name=f'bgp_peer_{key}', value=value, boundaries=(0, None))
-
-        for entry in peer.metric_count:
-            key, value = entry
-            yield Metric(name=f'bgp_peer_{key}', value=value, boundaries=(0, None))
+    acceptedprefixes = peer.accepted_prefixes
+    prefixadminlimit = peer.prefix_admin_limit
+    prefixthreshold = peer.prefix_threshold
+    warnthreshold = None
+
+    if prefixadminlimit is not None and prefixthreshold is not None:
+        warnthreshold = int(prefixadminlimit / 100.0 * prefixthreshold)  # use float (100.0) to get xx.xx in division
+    if acceptedprefixes is not None and peer.peer_state == 6:  # peer established and prefixes accepted
+        yield from check_levels(
+            value=acceptedprefixes,
+            metric_name='bgp_peer_acceptedprefixes',
+            levels_upper=params.get('accepted_prefixes_upper_levels', (warnthreshold, prefixadminlimit)),
+            levels_lower=params.get('accepted_prefixes_lower_levels'),
+            label='Prefixes accepted',
+            render_func=lambda v: f'{v}'
+        )
+
+    now_time = time.time()
+    value_store = get_value_store()
+
+    for entry in peer.metric_rate:
+        key, value = entry
+        try:
+            value = get_rate(value_store, f'{key}', now_time, value, raise_overflow=True)
+        except GetRateError:
+            value = 0
+        yield Metric(name=f'bgp_peer_{key}', value=value, boundaries=(0, None))
+
+    for entry in peer.metric_count:
+        key, value = entry
+        yield Metric(name=f'bgp_peer_{key}', value=value, boundaries=(0, None))
 
 
 register.snmp_section(
diff --git a/agent_based/inv_bgp_peer.py b/agent_based/inv_bgp_peer.py
index d273b4b..0262c14 100644
--- a/agent_based/inv_bgp_peer.py
+++ b/agent_based/inv_bgp_peer.py
@@ -60,7 +60,7 @@ def parse_inv_bgp_peer(string_table: List[StringByteTable]):
             'local_as': local_as,
             'local_id': local_id,
             'bgp_type': get_bgp_type(local_as, remote_as),
-            'fsm_established_time': int(fsm_established_time),
+            'fsm_established_time': int(fsm_established_time) if fsm_established_time.isdigit() else None,
             'peer_state': 1 if state == '6' else 2,  # adjust to match if_oper_status for inventory painter
             'last_error_code': bgp_error_code_as_hex(last_error),
             'last_error': bgp_error_as_string(last_error),
diff --git a/agent_based/utils/bgp_peer.py b/agent_based/utils/bgp_peer.py
index 691c144..803d1c2 100644
--- a/agent_based/utils/bgp_peer.py
+++ b/agent_based/utils/bgp_peer.py
@@ -18,6 +18,10 @@
 # 2022-05-12: merged bgp_get_ip_address_from_oid with bgp_render_ip_address
 #             changed IPv6 address format to lower case as required by rfc5952 section-4.3 (this affects IPv6 items)
 
+#
+# https://ftp.ripe.net/ripe/asnames/asn.txt AS Name List
+#
+
 import requests
 import json
 import ipaddress
@@ -36,12 +40,12 @@ class BgpPeerItem(TypedDict):
 class BgpPeer:
     peer_state: int
     peer_statestr: str
-    admin_state: int
     admin_statestr: str
-    fsm_established_time: int
     metric_rate: List[Tuple[str, int]]
     metric_count: List[Tuple[str, int]]
     item: BgpPeerItem
+    admin_state: Optional[int]
+    fsm_established_time: Optional[int]
     device_admin_limit: Optional[bool]
     prefix_admin_limit: Optional[int]
     prefix_threshold: Optional[int]
@@ -60,12 +64,12 @@ class InvBgpPeer(TypedDict):
     local_as: str
     local_id: str
     bgp_type: str
-    fsm_established_time: int
     peer_state: int
     last_error_code: str
     last_error: str
     status_columns: Dict[str, str]
     address_family:  Optional[str]
+    fsm_established_time: Optional[int]
 
 
 def sec2hr(seconds):
@@ -116,7 +120,11 @@ def bgp_error_code_as_hex(error_code: List[int]):
 
 def bgp_error_as_string(error_code: List[int]):
     # byte1, byte2 = ByteToHex(bytestring).split()
-    main_code, sub_code = error_code
+    try:
+        main_code, sub_code = error_code
+    except ValueError:
+        return 'Unknown'
+
     names = {}
     names[0] = {0: 'NO ERROR'}
     names[1] = {
@@ -206,9 +214,9 @@ def bgp_get_peer_entry(
         remote_addr: str,
         remote_as: str,
         peer_state: str,
-        admin_state: str,
         fsm_established_transitions: str,
-        fsm_established_time: str,
+        fsm_established_time: Optional[str],
+        admin_state: Optional[str],
         in_updates: Optional[str],
         out_updates: Optional[str],
         in_messages: Optional[str],
@@ -219,9 +227,9 @@ def bgp_get_peer_entry(
     bgp_peer = BgpPeer(
         peer_state=int(peer_state),
         peer_statestr=bgp_peerstate(int(peer_state)),
-        admin_state=int(admin_state),
-        admin_statestr=bgp_adminstate(int(admin_state)),
-        fsm_established_time=int(fsm_established_time),
+        admin_state=int(admin_state) if admin_state.isdigit() else None,
+        admin_statestr=bgp_adminstate(int(admin_state) if admin_state.isdigit() else None),
+        fsm_established_time=int(fsm_established_time) if fsm_established_time.isdigit() else None,
         metric_count=[],
         metric_rate=[],
         item={
diff --git a/bgp_peer.mkp b/bgp_peer.mkp
index ea9e93bd0e0f285d3b61e0748cd6da3133a1a9c8..d0b078c448371845ebd4ce3f5c2e79fd972788c5 100644
GIT binary patch
literal 15376
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
Dq`9&y

literal 15223
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%0DFHCbZw*@VPimZ>Ey?UMeh~tZ`
zt_eXqTXJBq&>&5RV=(+(_dpV3s1=Mn0*|70rph&Fo3fv2o_3W;wbZ!J>Pwx!9Fq4W
z1;(+1A0`ac)D(HwB2HO_>Ip<<K@P!x5N`fHUJ(754%-K%+x}`7H1I$48asFn&%OEv
zKPBlLO&_i{Y3_@x#|2N0akx&PyH59*rH>EB%4b8DDg!I~S7?D0G|*nliadcE*EsaN
z3(UhKU$}%puVWITKz{)m--ts%dZWNM46=;FkHlBbwr){g8y<Ffm<B}TchS#EDKBZ@
zgJqBxaqh|IdQhD+Ur^@9pxdX9B~&oP54DN&O!o)m(PyIB!W&BrOs2@+oYQdOH`G^x
zGn@mln^CkrU=E<L0l}liA|M%9D;5ntb;1wkO1j&px#U%S4;lfoPwn{LgUf}_zX3<2
z9}@0`WO$w!g?y){-P>tQ$iO(e`xAXL%Fe_w`-@V|6U^>=gjjQ*h*N*QG>|}|X>pxx
zPk%?{J&;TJfM#}R3rUZ~&tsTy9}jSpE_7augt!61@G+KcykS*1dWb>o+Ua!oUb!(k
zjH9L2j(UcW>$5Q5KK78tt2sV#&b~kX0}&5I#9<7Nj3}EE%4?D>F?Dug9P$nnxX&;W
zsB^g*^&B$YtYpZ9<<Q&q6Fl^hsD~}wjgXwxL~Gh$g%_l3(LZ~zLm15i+cRYLPc3qN
z!Rt#PkguTIan)Vp*!PHmBT@-<vFb6HXzuYwiz7VPJv1~>o`jq38)H-PQ^->7@h@l)
z?<Up{lEX9&4;n|ugP!K~R8#S)nKgtCUc(iFSE<^ZQ#Hbs+j{&XON|3il8%7u`U>c|
z_Iqy-D#-B)OZr})1m{4H0AE)rRm{7nk_|}t|M5**0*GAfc6=n%<|SAD2#kUM=8e|d
zt^DToiEVm(X|2V{y*K$RNIk~x-5y9x`vm|fAwmg^zXig64%%M<-}H-5eq0+82NN+@
zd7QuaTYSS={dXL>O}BZS=iP^&Z7i*EYdg@s7QA8E91(42U2)fDkIql)Ts>2iPwP2i
z`DKH8th??zC$CE>_<E3E>#%|HYE?wNx)54GpY9K#f7p$fWh#MgZ31=h_DO?)o>2G@
zfkJn`it>+?{SKdr$I~1fN4p_D9t`-}yxPt(Q3>-5hu7vX;rZn00&=TG{2$B+N1Rfz
zk`pC<df;z%#6NI-96%mT_7iBgVn(0#NEh6p!Vor4pZSBpXL5>)mykey8KBsc8@erN
z<QN`v)~?7Bos+f`vshZq*#sW9hYc#IbxCb*eK<<<mnk1Z#!s2=1LJo?n&qtD-_;jO
z|NGm!6eS!HuIcx64qS`0jMVhbaGT+;Jn!r4<t@K1=&*mK+@uO9X+`&6A=+iYq=*IR
zCeO$}C&k-~6>lD{PHe>Y{p4Ep_z#Oin(_jAZ5@`*U&lG^KZY@7x~@H-K^}9=KBk?d
zuFgn!JTSQ}JdfOY5R$l`q=-_NJ-1miOi%P{@b>r!{vr6_5tiGo>F#hDT#L(Nl@t#<
zSQm8qIJ0Vpy!QB6KS>1~af-NHog;_KC62xE(>vgW#b-l{F7<&Dg%e@i{Kxu0s0cw-
zES@xRVo<LE_(jWEJD~8L*FtRxth31TC77#^683kWB=U)X;zag=qz<dj$6|T=2{z1y
zBl?nDhgXVZ?c?0YBtt}e!a+u>q!;f>a048ZFH<gzpI5geefoU@P%MeblsoYL)ls5N
zur@q4b2MnBFgFF+xp1~t3w0wb!c}ZyTVVq!DEhXx2pDaQCEC)UF&Zm4oXM3ubInQT
zf$B_73??Fo{oQIBDyqsTc>A*qUcON0+U2DD$Jz39<Xr8m++b$K@jCxDer0JS2=waX
z`21mdioPFh2*42~kuSKYj5$sPw$cx-#QRS$)>^O)(Z)`3xo`3oT@c-+5{Paq1th)@
zL9%<QRP9<%L7xb>c6$_$r)IJh3ZlNMHXhEn(_*T&SSk4Aw+QFx?{*~_rdY0jd+!)m
zxG%zYyPPpLGY$%dgZ*}DXe~yrKakS;ks7m!N!~MkH&>1L0mTTP1b=V1w%>(4_3&Ar
zH3o1xG83ktNmmwV4#TDhUqu%<x}Zc_VbR=%K(G=`nvTO7_%bTmBB}}tw@epoik%BB
zr%pkn<_sPz+GG(dTK&S<o=O1fD?O`;OAtffW-)fhD^Ir3>zT2568@Fcq_Lj_J);r*
z^+s3DQJp4zw_W$QXwpQ4sD~oG?>=Lt$3P9d=BVivg9`QF1S~KOTYGc==<6zMXC6#Q
z^#Pim>E%G9!5nseXxqb)EX<Afe<sDFB3ru%w>j>;SOZ;R+5tOBGcbQ$a`Bie*Dh!K
z6KQ&}M=25a?|Ty@A8SCuoZqeX89%qfPuIws05CTaz$iWr@CPr;<vUK`@I!v3Li(Tp
zW+BD5IC0lfr(<EZiI6=%RxC%nt2)%&&P#Dlw(hpFrN@;|{od>sKLny+AH_YykI)6C
zQIRp=WA|3BXi19_^dXJto~GX4_t-(5>+d=fxBI^|9Ce~>$20Y-LhoN0CNgi3`~RfF
z0i?I%!YI>zI_25SO3aBDV-;JD{{%mwc1K~^u6-Qjogm$PvGeJwBH3P_0oW$81N0)0
zZ|Fz8Zr%)fabRfC5UC#qH9@K<Kq|b1MQ9DP`;Cnv7Q=BDlRgueHlZdXyHGN3<3<He
zwZO}=?%;R@s4MXx#(ma4lO-hWKkoF3s6ZCpl1gXi$OdjN4_@I9X-@93l>|A7KNMwz
zxlF8ze<;RQ0{TMGRxjI!?Ie=r2@6*uqd18rUO=RBKv<4H6TmXvHThuSwiI-+NBlTT
z#f3DZT6$c1!mLBeNF2k)`AYd8L`^obo7|o?PZZI~<9Jh5U-`TFI)y_%k{h_W7te@j
z>Y~{D9l3_Xv`=SUrIsu^tqAA?HrK5(Pcqf{fbfxU!aDQo#~T^451g9uii`g<6-o)%
z3gS_Z3or`jMO7OqsAhO$&)Pk<9?~tE5J9gtB-i)TV!YNgsc#^TO$#L$`-+xyEKnsk
z(2E)8XHz4W;!|_E2|Jqp+5!Ls0HI63n=9To(pg>5XCK>b9ApF_&qTPF3kzPN<yY^^
z5B)!B|ESi&rG|I~5Lh_T{bPl~OljDctJ|x#-5)%r-e(nKM(6C_&dQ42<FBMTCrLD4
zW)0Exh8{YhB~`T;*d?dvQa$1ZVcQIssN<+rqt9KWu7RaufojKx+<_P*P{2p>ANdB0
zj2TTRdf%wJhUE-z6?#dYEUJ}y*WQ+e3x`b=cwX$k4h6Xl`UETAz0dzgpLy;-_yEFt
zjRSoT)6hFK)-==;7ErFtw3MtL(I^>k9e<38WkMa01JWK09(xz;o*sw<Ww!@@D-8h_
z$yARjQ&j&WUhVQR<tI_@*G5<^PXW&qXAxeo#RQRxE9O<^^No>&crvSTi95&&gOWyK
z=6_m)`Y6C)fFM^?a`h;%*RJ^OOW*j)GbdHR|H&|NTZm}EE2G4_ILOEjtiXGV6V(<o
zuIlm}Zaio5T?CsBcMT$5&l_ZL%ocWdMdEDxC$;oE0_>Ly?v<w}_gshMm-CvjJ|yuz
z>~CN4vJjuee$<mibg3BgJoHN2FzM~##;x<XRz$uVuUS-r$k}IW^U8LiBEM0R@dQ}&
zqg`B5D6<46+nQV3R}JgqqSFi2?^cdCaXOuO&LQ6He;c?Oa<JNM3QYCMW$;3nogRiT
zJozV|GABbE-_&XA(KSwSAJ3fNH)J%2wUG)@52K?Vc`V+)yyO{Xfd)H;4BF6!+~+r?
zj=~%ngZq;4-0Y7X%(h^k#zVV-cjBqh6caaGXga_G?Lc9D78Y6JYCZI`NJiwtwU))E
zjb*$!a}g#xR{=?0%l&_>l=7u<OVv&|W(hLNYqjZK(L|IY?1$VG)PVyy4K$EN;E(&6
z+{!Wye-%USd}xt<*$md*=Zj^6(>eVWw4c?Ff6G`1`Ezi3TVCr5fD_I4;vm}ntMdc)
z3{w+TUWzC#d06e;Yvb2G{_9z<zcf6&*vJ}865OB-+~`g3LNU$J+bf7zp&F&BUMaL1
zql()U@5K&TD!w_&ltrn&?r*Qz1rq8_KJlgt`t>lkKX&+FPf|gGGmYj=aSb<@2JT+@
zU!FQ)U39FA3hFT~_aq;BtAsF~GM`A3cH5Ctl}{LX-gVdbPS+=)lVXkhS+pwo^JbJk
zRmS#J7VLjl_mEMu@7gBZosUg7DpkAGfrU;{VK^=$nfB4rFt|Odz-N4a4s7Cls|CHZ
zl*XM1`j-bpA`qei_7Z#%FVVo2A^cAVT=mKuLQ9yEQ_%<xR$mK&T8R{|-@k7o;GMh}
zqZ|^boh#x89bXaJyjnvmOX$&!?4ImL&PSke(Y!vS3LRS?@q|#iEs(7+Teu>Rz1nLq
z@fKhqS#6so9_lL)z+VWkl?aP#6B*haQ;8E$Kole`#2A$!uJnh{Y&OvcYHqaPV5W5M
zMBqfHS6i=cMEDJIjrO=Ub|1}a5~F;?DAj;(cMK*3(Q}XXMzfT=fF}Y9u1Il4NlUA;
zzr?RMqN19n%vP%Q>!YcT<tH~=dapKH)YWE>-86d5NY?+rONU8n%<}3jeR5wJJX?Nm
z-|cQ8CU*coMzOzA7Bj(B!h-XJosr|l5#s*ti=v6;U^rkYfO!y6NboYpQ=-B2-t43F
zf4}jZK`ml1xH_gt>*fUyzlN}JB_gTcKx+SEmFlr8YS)uz+~tcnoUY4n|8*;A=U2$S
zozs)D7ef=<=119X^LGrdv`!H*V0usHMp!~c;H@_y0p=PSrj_dLr~5^5r%gR609BTI
z6RnpLbk3w<%|HgmTdE~PYG7ALi!d_lI)V`smm_|Q=I$s}9w0vdE^qa~5BFXXzQ9*m
zyOVDZx|41PCDQ&FABx*g(eNBn|K)fG17c5?rtAM)eX(hzaikBz)en%lwMpYAJf_|#
zU7VC6`+IWY9Mh7<O5?2qUN^jk6nmNyGUKui|6S2jC3t6dAAUJ#DC?<|EEz-Da1MnA
zyoqk3Fj4;lsi<Wtw6sg@6InDucph=l1G8<8%GJs<2FKi6`?RK3H!HuF{d1#|8dsl+
zFZNYaon4vo#XcafaANuP{*Oz3zBN%r{4gx*s(>A@8uPmVah9lLGr~@^99PT*hI{OM
z_723`D@>p>(JYOdHh2z?bfQpUiH8n+<8DqibT1_f4x9s7zRtUaZkUacgVfI@JLhJg
z@V^!pNl`M!e+!bws1r}=zV||<%FvPtc<TFgOKx4H&QwibP^&1GRlS5rQ<HgI{OEQP
zNlcK4EY=@$bNx0zrIO5{C*{5f(vx<Vh%_ji@<S2g_^d7F0$HSMA9&z1$=TMD5Eff|
zY05Qa52&8g4m(XGDQuH?pUFGQ5Rhz=#1I~oT#KZzR=S+9@+d|jNAsySDY2J+gqb^8
zh22K_^6n#P7B#_4-~hrK`|fig{ratwC($^PBJ<MG_l9i;Pm6W)!_6upghDOwZ1fH^
z>tb4GQX8&+Z%A{0EOop0C)XpMu_;yBb5Koimyq>PpuAr>N{xiJ?iCl4?B*QGC2uy2
zt;yxO&4Bn8*xJl{plYCv|FeJ`A{%X{oi*<nPQ`P85(i~l1yxNgV{ZxY41=#aMhFvc
zy6%2#x(K|W;{o+J)ENC!IzMgj4$Pjakl?IRt4oG`sX!=CViIR<t;M5jE0~>70`>#f
z{(yyE42fggAb2o@+z3@Br4%nmA&IdhG{+j&b8(CvId8UFVKF_8$#_6G6zKOkv@y-R
zzVWdWe&D~Z_<gO9XyaYs5U{lr_F=UZl?{6T?LJ!WUupS(dm5SJS&NU)XY>eNVZ0je
z*7ZBt<D~XZRv6O)?0g>1ai8o4ZXp-95l%fy>zu17C3=21hw?l(+cg;WitV=;!)Ou<
z$+zQTY{l`sf7rvAwO?mn2s$?~@X<Qq70BS&UD6yl5cO1d$9}TO_0P94NrTssAeVJx
zGeWoN=NY=4VbY%+<9|%UPPaih&z1Jmf&xNgaf>FoT8<wpshEhFNh(RU8PFUJkQb?`
zovt-+{5Ju(B{D)bf?Rhy?Fwam@5j9URO8Lm{qu}eXKBkv0@?Rid!@<wAEfqe=i#EU
zCr`(_IV9y&UcYF0l%3jO@bvZl+f8j8v|g#5-Yw10NK54?U<ouk3h5kbw@NAF;Ij%(
z(uft!RCX$cMQyVZ><%5$RZ^#{XO3d{+X(?~wb~yZ2+f7tAp=@8_@nq2L)Uy*C#!X?
zY7#w2iwg2xEmhD!>0Pn;t59A@-t}?0w9jeICFg;DMvq$)dknfp)D9cJ{*)TFH)u8e
zFtVj9GWgh0Xa&o0b-^bTF?j(<P;K6SW40lZmA&EB>nWAwy?tQ|A6&A8l!9R>Vy4q}
zdw!4}DE)6F?T}rA5tT@&grkNDlpV}PD9YNWC|Mieg2A6c;dXnQbmFqNlgr4`ZX;to
z?DdCnCl&@&bqL~uhO6*4uI*pfr~Ji$uYrKr%<=PFj(@+lm8JGT1+c4aRk8}hBJBre
zg;T8mgNk-ASCkoI`4$f9IT^6V9af(Cta72{m9kvk$gz37CYHQXlJpVMMIMu&(m*aJ
z`_dYxYvAOKN)iEFp;uM4r8SiGb|V+hPzci}qPdJTL@-vhhsDrqHAMnuw|?L0S9@W%
zesPeeR9*nD^|~X#ui~BGcX)p9x8;!F?mCj+WERACtLPz9D1ntR9prv=XD&!m9(E?2
zkhAqd=l)F_37EVmsE&;diPjf-dv$jKGT+ar*Y1hHU6kJb{@!op6#OMV*f&oH&l@wG
zE2o^LsUvFPWvlQ8pI1y0<(xU~8@N(xRb#?)DbQ?4b_nxKi#EJU{yV+X3qcD+$)3`j
z?luERj8eaM(dCTm$>xjN)z~DuakXNPt2WdKBbHVEqf$dCrKe?y+vi-#p6V<-%00ST
z&`QDVMGaW0_V<cl%2aR0yO47SuKq}fExDTRPU!S=XR87L@dA+2>36|~svv@S!M7u}
z5Q3^sr}A6ryjjx;d*^0-H&$D=`_g}Bdmy{Z{1-kBON8g6ci`T$+H>PLp3lFoC`4US
zjQwb_MrQF(@ZgYa2M(&LhQ)vyhXA$H%7=vkxRTY1djEh!C--%%Z(OwJ!FxOE2X~rr
z^MwNa@jJbIVrAFAj))@oY$ej0ep~%?JO%58#+%LS!;=e-%Ohek|0oIjx(OwkZm$cv
z04?|8G202(f)3Y_(3{bKj1=Y&oT0kqeOaX8`;}dX;c_49?1#T|Ek3y5Pg3oTZvP4C
zZ@<Xkz8e@J+@FMA&D<U5@dq^?dUl{(k=tg%A`n|vVmAZ?ay%>xKILFH-?ulRwrV@v
zB^bg)zbUwnB0{#NqPWG4*iBL_4iDc)vr<{95a&yXzCts4XC$*0jLt)gMJ75Rg!~$%
z?+)LU3nLrgu_VYb!m=}WCjz<A(PZ+>G~>7+*{AmZ;-=x_42I~%b%v%Bk@?-TJ&hzT
zuyf@iQ)cN?S}i8jYZ00e8m;j=`A5GB^>OO{qeOFh^y#I3CGYuw10BH5MY=Zljj_fe
z-7H$pz*BBTQzTX)sKO_KMyz$>CmK+Te6@25{xV|^{nriqCYL)pFARPkusmOxFYdFJ
zF!$z<uFAR`?%Bc;@rGzqRT%Ch@pbLfx+xA3D?qU)MAQQo{!G<mIPgcM&|DP4==B6n
zz2qLUF;#=e+InQDC_MhAbq{a&W|9hbeESS$^e?Ouo5(vfb3wV`M4<C$R^Y~oxDunc
awnF_s2rS$y7kR8ddbV^4bU^07K>rJ96R5!e

diff --git a/packages/bgp_peer b/packages/bgp_peer
index cedf208..1bb1006 100644
--- a/packages/bgp_peer
+++ b/packages/bgp_peer
@@ -20,7 +20,7 @@
  'name': 'bgp_peer',
  'num_files': 8,
  'title': 'BGP Peer State Check',
- 'version': '220906.v1.8a',
+ 'version': '20220911.v1.8b',
  'version.min_required': '2.0.0',
  'version.packaged': '2021.09.20',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab