Constant libzt::zts_event_t_ZTS_EVENT_NODE_FATAL_ERROR[][src]

pub const zts_event_t_ZTS_EVENT_NODE_FATAL_ERROR: zts_event_t = 204;
Expand description

A fatal error has occurred. One possible reason is:

Your identity has collided with another node’s ZeroTier address

This happens if two different public keys both hash (via the algorithm in Identity::generate()) to the same 40-bit ZeroTier address.

This is something you should “never” see, where “never” is defined as once per 2^39 new node initializations / identity creations. If you do see it, you’re going to see it very soon after a node is first initialized.

This is reported as an event rather than a return code since it’s detected asynchronously via error messages from authoritative nodes.

If this occurs, you must shut down and delete the node, delete the identity.secret record/file from the data store, and restart to generate a new identity. If you don’t do this, you will not be able to communicate with other nodes.

We’d automate this process, but we don’t think silently deleting private keys or changing our address without telling the calling code is good form. It violates the principle of least surprise.

You can technically get away with not handling this, but we recommend doing so in a mature reliable application. Besides, handling this condition is a good way to make sure it never arises. It’s like how umbrellas prevent rain and smoke detectors prevent fires. They do, right?

Meta-data: none