Added
Responder enumeration for hosts that expose more than one OCF device.
read_ocf_responder(host, port)reads one responder's/oic/didentity
(rt,di, name) and its advertised secure ports in a single call.discover_ocf_responders(target, *, interface_address, ...)enumerates every
responder at an IPv4 host and returns each with that identity, so two OCF
devices behind one address can be told apart. It reads one responder at a time.secure_ports_for_di(responders, di)selects a responder by its stored Device
UUID, which is stable across the reboots that move the secure port.
These compose the existing discovery primitives and add no new wire behaviour.
Choosing which responder is the wanted appliance, and how to fall back when
multicast cannot cross a subnet, stay with the caller. The di returned here is
the plaintext one, for selection; it does not replace an authenticated
/oic/d.di check made after a handshake.
Motivated by the multiple-responders-per-IP case in mbillow/localthings#540.