diff --git a/agent_based/utils/bgp_peer.py b/agent_based/utils/bgp_peer.py
index 5044f8cfb02c896b6a7ab3f5ec77da79631da6cf..2df40ce76601d7133ab3f4abfcf8b4a262f3e3b0 100644
--- a/agent_based/utils/bgp_peer.py
+++ b/agent_based/utils/bgp_peer.py
@@ -15,10 +15,11 @@
 # 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
+# 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 peers)
 
 import requests
 import json
-import re
 import ipaddress
 from typing import List, Tuple, Optional, Dict, TypedDict
 from dataclasses import dataclass
@@ -162,23 +163,6 @@ def bgp_error_as_string(error_code: List[int]):
     return names[main_code].get(sub_code)
 
 
-def bgp_shorten_ipv6_address(address):
-    address = address.split(':')
-    span = 2
-    address = [''.join(address[i:i + span]) for i in range(0, len(address), span)]
-    for m in range(0, len(address)):
-        address[m] = re.sub(r'^0{1,3}', r'', address[m])
-    address = ':'.join(address)
-    zeros = ':0:0:0:0:0:0:'
-    while not zeros == '':
-        if zeros in address:
-            address = re.sub(r'%s' % zeros, r'::', address)
-            zeros = ''
-        else:
-            zeros = zeros[:-2]
-    return address
-
-
 def bgp_render_ip_address(addr_type: str, addr: List[int]) -> str:
     if addr_type == '1':
         return '.'.join([str(m) for m in addr])
@@ -204,11 +188,16 @@ def bgp_get_ip_address_from_oid(oid_end):
     # u'2.16.42.5.87.192.0.0.255.255.0.0.0.0.0.0.0.17.2.1' -->  42.5.87.192.0.0.255.255.0.0.0.0.0.0.0.17
     ip_address = ''
     oid_end = oid_end.split('.')
-    if int(oid_end[1]) == 4:  # length of ip address
+    addr_type = oid_end[0]
+    addr_length = oid_end[1]
+
+    if addr_type == '1' and addr_length == '4':  # length of ip address
         ip_address = '.'.join(oid_end[2:6])  # ipv4 address
-    elif int(oid_end[1]) == 16:  # ipv6 address
-        ip_address = ':'.join('%02s' % hex(int(m))[2:] for m in oid_end[2:18]).replace(' ', '0').upper()
-        ip_address = bgp_shorten_ipv6_address(ip_address)
+    elif addr_type == '2' and addr_length == '16':  # ipv6 address
+        ip_address = []
+        # change list of str to lis of int
+        ip_address += [int(m) for m in oid_end[2:18]]
+        ip_address = bgp_render_ip_address(addr_type, ip_address)
 
     return ip_address
 
diff --git a/bgp_peer.mkp b/bgp_peer.mkp
index 58bc433251708009dd4eca1bf321978f840f5dfe..5ea76ce9f187f0ebb571ca7b8fe7f1074530e1c5 100644
Binary files a/bgp_peer.mkp and b/bgp_peer.mkp differ
diff --git a/packages/bgp_peer b/packages/bgp_peer
index dfcc8b91512fea1eff3376ee8da651d54c404a8c..fc7af17e58970a94c1c3abf90c7c3b785e4264c7 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': '20220511.v1.8',
+ 'version': '20220512.v1.8',
  'version.min_required': '2.0.0',
  'version.packaged': '2021.09.20',
  'version.usable_until': None}
\ No newline at end of file