mirror of
https://github.com/JoelBender/bacpypes
synced 2025-09-28 22:15:23 +08:00
handle no broadcast available in interface (loopback)
This commit is contained in:
parent
ec01d22eae
commit
54d0f4430b
|
@ -72,10 +72,15 @@ class UDPMultiplexer:
|
|||
else:
|
||||
self.address = Address(addr)
|
||||
|
||||
# check for a special broadcast address
|
||||
# promote the normal and broadcast tuples
|
||||
self.addrTuple = self.address.addrTuple
|
||||
self.addrBroadcastTuple = self.address.addrBroadcastTuple
|
||||
if (self.addrTuple == self.addrBroadcastTuple):
|
||||
|
||||
# check for no broadcasting (loopback interface)
|
||||
if not self.addrBroadcastTuple:
|
||||
noBroadcast = True
|
||||
elif (self.addrTuple == self.addrBroadcastTuple):
|
||||
# old school broadcast address
|
||||
self.addrBroadcastTuple = ('255.255.255.255', self.addrTuple[1])
|
||||
else:
|
||||
specialBroadcast = True
|
||||
|
@ -117,9 +122,15 @@ class UDPMultiplexer:
|
|||
if pdu.pduDestination.addrType == Address.localBroadcastAddr:
|
||||
dest = self.addrBroadcastTuple
|
||||
if _debug: UDPMultiplexer._debug(" - requesting local broadcast: %r", dest)
|
||||
|
||||
# interface might not support broadcasts
|
||||
if not dest:
|
||||
return
|
||||
|
||||
elif pdu.pduDestination.addrType == Address.localStationAddr:
|
||||
dest = unpack_ip_addr(pdu.pduDestination.addrAddr)
|
||||
if _debug: UDPMultiplexer._debug(" - requesting local station: %r", dest)
|
||||
|
||||
else:
|
||||
raise RuntimeError("invalid destination address type")
|
||||
|
||||
|
|
|
@ -73,10 +73,15 @@ class UDPMultiplexer:
|
|||
else:
|
||||
self.address = Address(addr)
|
||||
|
||||
# check for a special broadcast address
|
||||
# promote the normal and broadcast tuples
|
||||
self.addrTuple = self.address.addrTuple
|
||||
self.addrBroadcastTuple = self.address.addrBroadcastTuple
|
||||
if (self.addrTuple == self.addrBroadcastTuple):
|
||||
|
||||
# check for no broadcasting (loopback interface)
|
||||
if not self.addrBroadcastTuple:
|
||||
noBroadcast = True
|
||||
elif (self.addrTuple == self.addrBroadcastTuple):
|
||||
# old school broadcast address
|
||||
self.addrBroadcastTuple = ('255.255.255.255', self.addrTuple[1])
|
||||
else:
|
||||
specialBroadcast = True
|
||||
|
@ -118,9 +123,15 @@ class UDPMultiplexer:
|
|||
if pdu.pduDestination.addrType == Address.localBroadcastAddr:
|
||||
dest = self.addrBroadcastTuple
|
||||
if _debug: UDPMultiplexer._debug(" - requesting local broadcast: %r", dest)
|
||||
|
||||
# interface might not support broadcasts
|
||||
if not dest:
|
||||
return
|
||||
|
||||
elif pdu.pduDestination.addrType == Address.localStationAddr:
|
||||
dest = unpack_ip_addr(pdu.pduDestination.addrAddr)
|
||||
if _debug: UDPMultiplexer._debug(" - requesting local station: %r", dest)
|
||||
|
||||
else:
|
||||
raise RuntimeError("invalid destination address type")
|
||||
|
||||
|
|
|
@ -73,10 +73,15 @@ class UDPMultiplexer:
|
|||
else:
|
||||
self.address = Address(addr)
|
||||
|
||||
# check for a special broadcast address
|
||||
# promote the normal and broadcast tuples
|
||||
self.addrTuple = self.address.addrTuple
|
||||
self.addrBroadcastTuple = self.address.addrBroadcastTuple
|
||||
if (self.addrTuple == self.addrBroadcastTuple):
|
||||
|
||||
# check for no broadcasting (loopback interface)
|
||||
if not self.addrBroadcastTuple:
|
||||
noBroadcast = True
|
||||
elif (self.addrTuple == self.addrBroadcastTuple):
|
||||
# old school broadcast address
|
||||
self.addrBroadcastTuple = ('255.255.255.255', self.addrTuple[1])
|
||||
else:
|
||||
specialBroadcast = True
|
||||
|
@ -98,6 +103,7 @@ class UDPMultiplexer:
|
|||
bind(self.direct, self.broadcastPort)
|
||||
else:
|
||||
self.broadcast = None
|
||||
|
||||
# create and bind the Annex H and J servers
|
||||
self.annexH = _MultiplexServer(self)
|
||||
self.annexJ = _MultiplexServer(self)
|
||||
|
@ -117,9 +123,15 @@ class UDPMultiplexer:
|
|||
if pdu.pduDestination.addrType == Address.localBroadcastAddr:
|
||||
dest = self.addrBroadcastTuple
|
||||
if _debug: UDPMultiplexer._debug(" - requesting local broadcast: %r", dest)
|
||||
|
||||
# interface might not support broadcasts
|
||||
if not dest:
|
||||
return
|
||||
|
||||
elif pdu.pduDestination.addrType == Address.localStationAddr:
|
||||
dest = pdu.pduDestination.addrTuple
|
||||
if _debug: UDPMultiplexer._debug(" - requesting local station: %r", dest)
|
||||
|
||||
else:
|
||||
raise RuntimeError("invalid destination address type")
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user