diff --git a/checks/cisco_bgp_peer b/checks/cisco_bgp_peer
index f4bc1b4ea943eefdd550d807b16e3914ef0e7353..9fd01f2ec4beb8d68f740e2075fc801d2992fdbf 100644
--- a/checks/cisco_bgp_peer
+++ b/checks/cisco_bgp_peer
@@ -18,6 +18,8 @@
 # 29.05.2018: fixed longoutpout (removed not configured)
 # 02.11.2018: modified scanfunction (from "find 'cisco' =-1"  to "'cisco' in OID"
 # 02.18.2019: added fix for empty values ("" instead of "0") sugested by Laurent Barbier (lbarbier[at]arkane-studios[dot]com)
+# 24.02.2020: added workaround for missing cbgpPeer2AddrFamily (example L2VPN EVPN peers, Fix for jonale82[at]gmail[dot]com)
+#
 #
 
 #
@@ -208,8 +210,8 @@ def parse_cisco_bgp_peer(info):
         peer_ip = ''
         OID_END = OID_END.split('.')
         if int(OID_END[1]) == 4:  # length of ip address
-            peer_ip = '.'.join(OID_END[2:6])  # ip v4 address
-        elif int(OID_END[1]) == 16:
+            peer_ip = '.'.join(OID_END[2:6])  # ipv4 address
+        elif int(OID_END[1]) == 16:  # ipv6 address
             peer_ip = ':'.join('%02s' % hex(int(m))[2:] for m in OID_END[2:18]).replace(' ', '0').upper()
             peer_ip = bgp_shorten_ipv6_adress(peer_ip)
 
@@ -261,81 +263,95 @@ def parse_cisco_bgp_peer(info):
 
         return names[int(byte1, 16)].get(int(byte2, 16))
 
+
     # bgp not active
     if info == [[], []]:
         return None
 
-    cbgpPeer2Table, cbgpPeer2AddrFamily = info
+    cbgpPeer2Entry, cbgpPeer2AddrFamily = info
 
     peer_prefixes = {}
     # create dictionary from cbgpPeer2AddrFamily ('remoteip addrfamilyname' as index)
-    for entry in cbgpPeer2AddrFamily:
-        oid_end, addrfamilyname, acceptedprefixes, deniedprefixes, prefixadminlimit, prefixthreshold, \
-        prefixclearthreshold, advertisedprefixes, suppressedprefixes, withdrawnprefixes = entry
+    if len(cbgpPeer2AddrFamily) > 0 :
+        for entry in cbgpPeer2AddrFamily:
+            oid_end, addrfamilyname, acceptedprefixes, deniedprefixes, prefixadminlimit, prefixthreshold, \
+            prefixclearthreshold, advertisedprefixes, suppressedprefixes, withdrawnprefixes = entry
 
-        remoteaddr = cisco_bgp_get_peer(oid_end)
+            remoteaddr = cisco_bgp_get_peer(oid_end)
 
-        # check if prefixadminlimit is set
-        if prefixadminlimit.isdigit():
-            prefixadminlimit = int(prefixadminlimit)
-        else:
-            prefixadminlimit = 0
+            # check if prefixadminlimit is set
+            if prefixadminlimit.isdigit():
+                prefixadminlimit = int(prefixadminlimit)
+            else:
+                prefixadminlimit = 0
 
-        # check if prefixthreshold is set
-        if prefixthreshold.isdigit():
-            prefixthreshold = int(prefixthreshold)
-        else:
-            prefixthreshold = 0
+            # check if prefixthreshold is set
+            if prefixthreshold.isdigit():
+                prefixthreshold = int(prefixthreshold)
+            else:
+                prefixthreshold = 0
 
-        # check if prefixclearthreshold is set
-        if prefixclearthreshold.isdigit():
-            prefixclearthreshold = int(prefixclearthreshold)
-        else:
-            prefixclearthreshold = 0
+            # check if prefixclearthreshold is set
+            if prefixclearthreshold.isdigit():
+                prefixclearthreshold = int(prefixclearthreshold)
+            else:
+                prefixclearthreshold = 0
 
-        if acceptedprefixes.isdigit():
-            acceptedprefixes = int(acceptedprefixes)
-        else:
-            acceptedprefixes = 0
+            if acceptedprefixes.isdigit():
+                acceptedprefixes = int(acceptedprefixes)
+            else:
+                acceptedprefixes = 0
 
-        if advertisedprefixes.isdigit():
-            advertisedprefixes = int(advertisedprefixes)
-        else:
-            advertisedprefixes = 0
+            if advertisedprefixes.isdigit():
+                advertisedprefixes = int(advertisedprefixes)
+            else:
+                advertisedprefixes = 0
 
-        # fix sugested by Laurent Barbier (lbarbier[at]arkane-studios[dot]com)
-        # some Cisco devices report not "0" if the value is 0, instead the report "". for example Nexus devices behave like this.
-        if deniedprefixes.isdigit():
-            deniedprefixes = int(deniedprefixes)
-        else:
-            deniedprefixes = 0
+            # fix sugested by Laurent Barbier (lbarbier[at]arkane-studios[dot]com)
+            # some Cisco devices report not "0" if the value is 0, instead the report "". for example Nexus devices behave like this.
+            if deniedprefixes.isdigit():
+                deniedprefixes = int(deniedprefixes)
+            else:
+                deniedprefixes = 0
 
-        if suppressedprefixes.isdigit():
-            suppressedprefixes = int(suppressedprefixes)
-        else:
-            suppressedprefixes = 0
+            if suppressedprefixes.isdigit():
+                suppressedprefixes = int(suppressedprefixes)
+            else:
+                suppressedprefixes = 0
 
-        if withdrawnprefixes.isdigit():
-            withdrawnprefixes = int(withdrawnprefixes)
-        else:
-            withdrawnprefixes = 0
-
-        peer = {'remoteaddr': remoteaddr,
-                'addrfamilyname': addrfamilyname,
-                'acceptedprefixes': acceptedprefixes,
-                'deniedprefixes': deniedprefixes,
-                'prefixadminlimit': prefixadminlimit,
-                'prefixthreshold': prefixthreshold,
-                'prefixclearthreshold': prefixclearthreshold,
-                'advertisedprefixes': advertisedprefixes,
-                'suppressedprefixes': suppressedprefixes,
-                'withdrawnprefixes': withdrawnprefixes, }
-
-        peer_prefixes.update({'%s %s' % (remoteaddr, addrfamilyname): peer})
-
-    # create dictionary from cbgpPeer2Table (peer ip address as index)
+            if withdrawnprefixes.isdigit():
+                withdrawnprefixes = int(withdrawnprefixes)
+            else:
+                withdrawnprefixes = 0
+
+
+            peer = {'remoteaddr': remoteaddr,
+                    'addrfamilyname': addrfamilyname,
+                    'acceptedprefixes': acceptedprefixes,
+                    'deniedprefixes': deniedprefixes,
+                    'prefixadminlimit': prefixadminlimit,
+                    'prefixthreshold': prefixthreshold,
+                    'prefixclearthreshold': prefixclearthreshold,
+                    'advertisedprefixes': advertisedprefixes,
+                    'suppressedprefixes': suppressedprefixes,
+                    'withdrawnprefixes': withdrawnprefixes, }
+
+            peer_prefixes.update({'%s %s' % (remoteaddr, addrfamilyname): peer})
+
+    #  workaround: get remote ip from cbgpPeer2Entry if cbgpPeer2AddrFamilyName is missing :-(
+    elif len(cbgpPeer2Entry) > 0:
+        for entry in cbgpPeer2Entry:
+            remoteaddr = cisco_bgp_get_peer(entry[0])
+            addrfamilyname = ''
+
+            peer = {'remoteaddr': remoteaddr,
+                    }
+
+            peer_prefixes.update({'%s %s' % (remoteaddr, addrfamilyname): peer})
+
+    # create dictionary from cbgpPeer2Entry (peer ip address as index)
     peer_table = {}
-    for entry in cbgpPeer2Table:
+    for entry in cbgpPeer2Entry:
         oid_end, state, adminstatus, localaddr,  localas, localidentifier, remoteas, remoteidentifier, inupdates, \
         outupdates, intotalmessages, outtotalmessages, lasterror, fsmestablishedtransitions, fsmestablishedtime, \
         inupdateelapsedtime, lasterrortxt, prevstate = entry
@@ -494,10 +510,10 @@ def check_cisco_bgp_peer(item, params, parsed):
             ['Last error', peer.get('lasterror'), ''],
             ['Last error text', peer.get('lasterrortxt'), ''],
             ['Previous state', cisco_bgp_peerstate(peer.get('prevstate')), ''],
-            ['Address family name', prefixes.get('addrfamilyname'), ''],
+            ['Address family name', prefixes.get('addrfamilyname', 'unknown'), ''],
             ['Prefix admin limit (prefixes)', '%.0d' % prefixadminlimit, ''],
             ['Prefix threshold (prefixes/%)', '%.0d' % warnthreshold, '%.0d' % prefixthreshold],
-            ['Prefix clear threshold (%)', '%.0d' % prefixes.get('prefixclearthreshold'), '']
+            ['Prefix clear threshold (%)', '%.0d' % prefixes.get('prefixclearthreshold', 0), '']
            ]
 
         if params.get('htmloutput', False):
@@ -512,8 +528,7 @@ def check_cisco_bgp_peer(item, params, parsed):
             longoutput = '\n' + table_bracket % (''.join([line_bracket % cell_seperator.join([cell_bracket % (entry[0], entry[1], entry[2])]) for entry in longoutput_data]))
         else:
             longoutput += '\nfor nicer output' \
-                          '\ndisable \'Escape HTML codes in plugin output\' in wato --> global settings and' \
-                          '\nenable HTML output in \'Parameters for this service\''
+                          '\ndisable \'Escape HTML codes in plugin output\' in wato --> global settings and enable HTML output in \'Parameters for this service\''
             for entry in longoutput_data:
                 if not entry[2] == '':
                     longoutput += '\n{}: {} / {}'.format(entry[0], entry[1], entry[2])
@@ -537,16 +552,16 @@ def check_cisco_bgp_peer(item, params, parsed):
         now_time = time.time()
         rate_item = item.replace(' ', '_')
 
-        deniedprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('deniedprefixes', rate_item), now_time, prefixes.get('deniedprefixes'), onwrap=SKIP)
-        advertisedprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('advertisedprefixes', rate_item), now_time, prefixes.get('advertisedprefixes'), onwrap=SKIP)
-        withdrawnprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('withdrawnprefixes', rate_item), now_time, prefixes.get('withdrawnprefixes'), onwrap=SKIP)
-        suppressedprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('suppressedprefixes', rate_item), now_time, prefixes.get('suppressedprefixes'), onwrap=SKIP)
+        deniedprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('deniedprefixes', rate_item), now_time, prefixes.get('deniedprefixes', 0), onwrap=SKIP)
+        advertisedprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('advertisedprefixes', rate_item), now_time, prefixes.get('advertisedprefixes', 0), onwrap=SKIP)
+        withdrawnprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('withdrawnprefixes', rate_item), now_time, prefixes.get('withdrawnprefixes', 0), onwrap=SKIP)
+        suppressedprefixes = get_rate('cisco_bgp_peer.%s.%s' % ('suppressedprefixes', rate_item), now_time, prefixes.get('suppressedprefixes', 0), onwrap=SKIP)
 
-        inupdates = get_rate('cisco_bgp_peer.%s.%s' % ('inupdates', rate_item), now_time, peer.get('inupdates'), onwrap=SKIP)
-        outupdates = get_rate('cisco_bgp_peer.%s.%s' % ('outupdates', rate_item), now_time, peer.get('outupdates'), onwrap=SKIP)
+        inupdates = get_rate('cisco_bgp_peer.%s.%s' % ('inupdates', rate_item), now_time, peer.get('inupdates', 0), onwrap=SKIP)
+        outupdates = get_rate('cisco_bgp_peer.%s.%s' % ('outupdates', rate_item), now_time, peer.get('outupdates', 0), onwrap=SKIP)
 
-        intotalmessages = get_rate('cisco_bgp_peer.%s.%s' % ('intotalmessages', rate_item), now_time, peer.get('intotalmessages'), onwrap=SKIP)
-        outtotalmessages = get_rate('cisco_bgp_peer.%s.%s' % ('outtotalmessages', rate_item), now_time, peer.get('outtotalmessages'), onwrap=SKIP)
+        intotalmessages = get_rate('cisco_bgp_peer.%s.%s' % ('intotalmessages', rate_item), now_time, peer.get('intotalmessages', 0), onwrap=SKIP)
+        outtotalmessages = get_rate('cisco_bgp_peer.%s.%s' % ('outtotalmessages', rate_item), now_time, peer.get('outtotalmessages', 0), onwrap=SKIP)
 
         # prefixes
         # 'unit', <value>, <warn-at>, <crit-at>, <min value>, <max value>
@@ -593,7 +608,7 @@ check_info['cisco_bgp_peer'] = {
     'parse_function'          : parse_cisco_bgp_peer,
     'snmp_scan_function'      : lambda oid: 'cisco'in oid('.1.3.6.1.2.1.1.1.0').lower(),
     'snmp_info'               : [
-                                 ('.1.3.6.1.4.1.9.9.187.1.2.5.1',  # cbgpPeer2Table
+                                 ('.1.3.6.1.4.1.9.9.187.1.2.5.1',  # CISCO-BGP4-MIB::cbgpPeer2Entry
                                   [OID_END,
                                    '3',   # cbgpPeer2State
                                    '4',   # cbgpPeer2AdminStatus
@@ -627,5 +642,6 @@ check_info['cisco_bgp_peer'] = {
                                    '8.1.7',   # cbgpPeer2SuppressedPrefixes
                                    '8.1.8',   # cbgpPeer2WithdrawnPrefixes
                                    ]),
-                                 ]
+         ]
+
 }
diff --git a/cisco_bgp_peer.mkp b/cisco_bgp_peer.mkp
index 7becccbd2f5418e3799b70d0a01a7e0583974830..92521c7a27cd8c8bfcb2839d5c687204a62670e6 100644
Binary files a/cisco_bgp_peer.mkp and b/cisco_bgp_peer.mkp differ
diff --git a/packages/cisco_bgp_peer b/packages/cisco_bgp_peer
index b52887b2165890c662b022a717242a7d00c0311f..12fb6a27de60d4252c5ecb3679532dd8f31f3c92 100644
--- a/packages/cisco_bgp_peer
+++ b/packages/cisco_bgp_peer
@@ -7,6 +7,6 @@
  'name': 'cisco_bgp_peer',
  'num_files': 3,
  'title': u'Cisco BGP Peer',
- 'version': '20190218.v.0.2b',
+ 'version': '20200224.v.0.2c',
  'version.min_required': '1.2.8b8',
  'version.packaged': '1.4.0p35'}
\ No newline at end of file