3.1.5.1.1 Enumerator Also Functioning in the Mapper Role
If the enumerator is also functioning as a mapper, it MUST also do the following.
First, upon receipt of the Hello message, it MUST immediately check whether the Current Mapper Address field in the Hello header is equal to the MAC address of the network interface that it received the message about. In case of inequality, the mapper MUST immediately shut down quick discovery as specified in section 3.1.8.
Next, after all of the normal enumerator tasks are performed, it MUST decide which generation number (Generation Number field in Hello frame) to use for mapping, as follows. If the Current Generation Number is zero, the generation number from the Hello frame MUST be incremented by one using ones-complement arithmetic (that is, it MUST advance from 0xFFFF to 0x0001 and skip 0x0000) and stored as the current generation number. Otherwise, the current generation number MUST be subtracted from the generation number in the Hello frame. If the resulting value is less than or equal to 0x7FFF, the generation number from the Hello frame MUST be incremented by one and stored as current generation number. If the resulting value is greater than 0x7FFF, the generation number that the responder volunteers MUST be ignored.
If no responder volunteered a nonzero generation number, the mapper MUST select a new, nonzero generation number at random and broadcast a final Discover frame to disseminate the generation number to all responders.
This process permits a mapper to select a generation number before knowing that all possible responders have sent a Hello frame. The mapper MUST follow this process because it cannot determine when it will receive a late Hello frame.
For more information about generation numbers, see section 3.2.1.