The Node-Addressing object currently contains a mixture of two types of information:
*) information about the node, which is used for all purposes (routing state
monitoring, inter-node messaging, MA setup and re-use detection)
*) information about the setup and configuration of messaging associations,
which is only needed when a new MA is (possibly) to be set up and not valid
otherwise.
We need to add lifetime information to the second category (see issue 16). At
this point it seems sensible to split the object into two parts, with clearer
rules on when objects are needed. With the split, all fields would be mandatory
in each object; the node-information object would be mandatory in any Q/R/C
message, and the ma-information object would be mandatory if a MA was being set up.
At the moment, the rules for including the interface-address field are somewhat
complex; it is needed both for return addressing of messages (in which case NAT
translations need to be done and can be done automatically on D mode messages)
and to compare with newly received Query messages for route change detection
even if the original Query was discarded (since the Responder is delaying state
installation until the end of the handshake). It seems simplest to make the
interface-address field mandatory whenever the node-information object is
included, and let the message receiver work out whether to ignore it or whether
it needs translation.
|