|
|
@@ -15,6 +15,7 @@ BAC0_REGISTERED_WARNING = r"object type .* for vendor identifier 842 already reg
|
|
|
warnings.filterwarnings("ignore", message=BAC0_REGISTERED_WARNING)
|
|
|
|
|
|
import BAC0
|
|
|
+import BAC0.scripts.Base as bac0_base
|
|
|
import bacpypes3.app as bacpypes_app
|
|
|
from bacpypes3.apdu import ErrorRejectAbortNack
|
|
|
from bacpypes3.basetypes import PropertyIdentifier
|
|
|
@@ -147,6 +148,7 @@ def create_bacnet_bind_socket(port: int) -> socket.socket:
|
|
|
def go_style_bacnet_binding(port: int):
|
|
|
bind_socket = create_bacnet_bind_socket(port)
|
|
|
original_normal_link_layer = bacpypes_app.NormalLinkLayer_ipv4
|
|
|
+ original_validate_ip_address = bac0_base.validate_ip_address
|
|
|
socket_transferred = False
|
|
|
|
|
|
class GoStyleNormalLinkLayer(BIPNormal):
|
|
|
@@ -165,9 +167,11 @@ def go_style_bacnet_binding(port: int):
|
|
|
|
|
|
try:
|
|
|
bacpypes_app.NormalLinkLayer_ipv4 = GoStyleNormalLinkLayer
|
|
|
+ bac0_base.validate_ip_address = lambda _ip: True
|
|
|
yield
|
|
|
finally:
|
|
|
bacpypes_app.NormalLinkLayer_ipv4 = original_normal_link_layer
|
|
|
+ bac0_base.validate_ip_address = original_validate_ip_address
|
|
|
if not socket_transferred:
|
|
|
bind_socket.close()
|
|
|
|