def check_cb(src_n, src_ipp, rest):

            (sesid,
             ) = self.decodePacket('!4s', rest)

            if osm.syncd:
                if src_ipp == osm.me.ipp and sesid == osm.me.sesid:
                    # Yikes! Make me a new session id and rebroadcast it.
                    osm.me.sesid = randbytes(4)
                    osm.reorderNodesList()

                    osm.sendMyStatus()
                    osm.pgm.scheduleMakeNewLinks()
                    raise BadBroadcast("Tried to exit me")

                if not src_n:
                    raise BadBroadcast("Node not online")

                if sesid != src_n.sesid:
                    raise BadBroadcast("Wrong session ID")

            elif not src_n:
                # Not syncd, and haven't seen this node yet.
                # Forward blindly
                return

            # Remove node
            osm.nodeExited(src_n, "Received NX")