Check if the current settings conform to the LISP specifications and
        fix them where possible.

def sanitize(self):
        '''
        Check if the current settings conform to the LISP specifications and
        fix them where possible.
        '''
        super(MapReplyMessage, self).sanitize()

        # P: This is the probe-bit which indicates that the Map-Reply is in
        # response to a locator reachability probe Map-Request.  The nonce
        # field MUST contain a copy of the nonce value from the original
        # Map-Request.  See Section 6.3.2 for more details.
        if not isinstance(self.probe, bool):
            raise ValueError('Probe flag must be a boolean')

        # E: Indicates that the ETR which sends this Map-Reply message is
        # advertising that the site is enabled for the Echo-Nonce locator
        # reachability algorithm.  See Section 6.3.1 for more details.
        if not isinstance(self.enlra_enabled, bool):
            raise ValueError('Echo-Nonce Locator Reachability algorithm ' +
                             'enabled flag must be a boolean')

        # S: This is the Security bit.  When set to 1 the following
        # authentication information will be appended to the end of the Map-
        # Reply.  The detailed format of the Authentication Data Content is
        # for further study.
        if not isinstance(self.security, bool):
            raise ValueError('Security flag must be a boolean')

        if self.security:
            raise NotImplementedError('Handling security data is not ' +
                                      'implemented yet')

        # Nonce:  A 24-bit value set in a Data-Probe packet or a 64-bit value
        # from the Map-Request is echoed in this Nonce field of the Map-
        # Reply.  When a 24-bit value is supplied, it resides in the low-
        # order 64 bits of the nonce field.
        if len(bytes(self.nonce)) not in (3, 8):
            raise ValueError('Invalid nonce')

        # Map-Reply Record:  When the M bit is set, this field is the size of a
        # single "Record" in the Map-Reply format.  This Map-Reply record
        # contains the EID-to-RLOC mapping entry associated with the Source
        # EID.  This allows the ETR which will receive this Map-Request to
        # cache the data if it chooses to do so.
        for record in self.records:
            if not isinstance(record, MapReplyRecord):
                raise ValueError('Invalid record')

            record.sanitize()