master
h 85 lines 4.9 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_STREAM_HANDSHAKE_H
4 #define NETDATA_STREAM_HANDSHAKE_H
5
6 #define HTTP_HEADER_SIZE 8192
7
8 #define STREAMING_PROTOCOL_VERSION "1.1"
9 #define START_STREAMING_PROMPT_V1 "Hit me baby, push them over..."
10 #define START_STREAMING_PROMPT_V2 "Hit me baby, push them over and bring the host labels..."
11 #define START_STREAMING_PROMPT_VN "Hit me baby, push them over with the version="
12
13 #define START_STREAMING_ERROR_SAME_LOCALHOST "Don't hit me baby, you are trying to stream my localhost back"
14 #define START_STREAMING_ERROR_LOCAL_VNODE "Don't hit me baby, you are trying to stream my vnode back"
15 #define START_STREAMING_ERROR_ALREADY_STREAMING "This GUID is already streaming to this server"
16 #define START_STREAMING_ERROR_NOT_PERMITTED "You are not permitted to access this. Check the logs for more info."
17 #define START_STREAMING_ERROR_BUSY_TRY_LATER "The server is too busy now to accept this request. Try later."
18 #define START_STREAMING_ERROR_INTERNAL_ERROR "The server encountered an internal error. Try later."
19 #define START_STREAMING_ERROR_INITIALIZATION "The server is initializing. Try later."
20
21 typedef enum {
22 // negotiated version values
23 // IMPORTANT: maintain compatibility across netdata version - do not change these
24 STREAM_HANDSHAKE_OK_V3 = 3, // v3+
25 STREAM_HANDSHAKE_OK_V2 = 2, // v2
26 STREAM_HANDSHAKE_OK_V1 = 1, // v1
27 STREAM_HANDSHAKE_NEVER = 0, // never tried to connect
28 STREAM_HANDSHAKE_CONNECT_HANDSHAKE_FAILED = -1, // sent by parent - DO NOT CHANGE
29 STREAM_HANDSHAKE_PARENT_IS_LOCALHOST = -2, // sent by parent - DO NOT CHANGE
30 STREAM_HANDSHAKE_PARENT_NODE_ALREADY_CONNECTED = -3, // sent by parent - DO NOT CHANGE
31 STREAM_HANDSHAKE_PARENT_DENIED_ACCESS = -4, // sent by parent - DO NOT CHANGE
32 STREAM_HANDSHAKE_CONNECT_SEND_TIMEOUT = -5, // generated by child
33 STREAM_HANDSHAKE_CONNECT_RECEIVE_TIMEOUT = -6, // generated by child
34 STREAM_HANDSHAKE_CONNECT_INVALID_CERTIFICATE = -7, // generated by child
35 STREAM_HANDSHAKE_CONNECT_SSL_ERROR = -8, // generated by child
36 STREAM_HANDSHAKE_CONNECTION_FAILED = -9, // generated by child
37 STREAM_HANDSHAKE_PARENT_BUSY_TRY_LATER = -10, // sent by parent - DO NOT CHANGE
38 STREAM_HANDSHAKE_PARENT_INTERNAL_ERROR = -11, // sent by parent - DO NOT CHANGE
39 STREAM_HANDSHAKE_PARENT_IS_INITIALIZING = -12, // sent by parent - DO NOT CHANGE
40
41 // --- internal handshake reasons ---
42
43 // receiver-only codes
44 STREAM_HANDSHAKE_RCV_DISCONNECT_PARSER_FAILED = -13,
45 STREAM_HANDSHAKE_RCV_DISCONNECT_STALE_RECEIVER = -14,
46 STREAM_HANDSHAKE_RCV_DECOMPRESSION_FAILED = -15,
47
48 // sender-only codes
49 STREAM_HANDSHAKE_SND_DISCONNECT_HOST_CLEANUP = -16,
50 STREAM_HANDSHAKE_SND_DISCONNECT_COMPRESSION_FAILED = -17,
51 STREAM_HANDSHAKE_SND_DISCONNECT_HTTP_UPGRADE_FAILED = -18,
52 STREAM_HANDSHAKE_SND_DISCONNECT_RECEIVER_LEFT = -19, // used only in pulse
53 STREAM_HANDSHAKE_SND_VNODE_IS_STALE = -20, // used only in pulse
54
55 // receiver and sender codes
56 STREAM_HANDSHAKE_DISCONNECT_SIGNALED_TO_STOP = -21, // a fallback when (s|rpt)->exit.reason is not set
57 STREAM_HANDSHAKE_DISCONNECT_SHUTDOWN = -22,
58 STREAM_HANDSHAKE_DISCONNECT_SOCKET_READ_FAILED = -23,
59 STREAM_HANDSHAKE_DISCONNECT_SOCKET_WRITE_FAILED = -24,
60 STREAM_HANDSHAKE_DISCONNECT_SOCKET_ERROR = -25,
61 STREAM_HANDSHAKE_DISCONNECT_TIMEOUT = -26,
62 STREAM_HANDSHAKE_DISCONNECT_SOCKET_CLOSED_BY_REMOTE = -27,
63 STREAM_HANDSHAKE_DISCONNECT_BUFFER_OVERFLOW = -28,
64 STREAM_HANDSHAKE_DISCONNECT_REPLICATION_STALLED = -29,
65
66 // sender (stream parents - SP) failures to connect
67 STREAM_HANDSHAKE_SP_PREPARING = -30,
68 STREAM_HANDSHAKE_SP_NO_HOST_IN_DESTINATION = -31,
69 STREAM_HANDSHAKE_SP_CONNECT_TIMEOUT = -32,
70 STREAM_HANDSHAKE_SP_CONNECTION_REFUSED = -33,
71 STREAM_HANDSHAKE_SP_CANT_RESOLVE_HOSTNAME = -34,
72 STREAM_HANDSHAKE_SP_CONNECTING = -35,
73 STREAM_HANDSHAKE_SP_CONNECTED = -36,
74 STREAM_HANDSHAKE_SP_NO_STREAM_INFO = -37,
75 STREAM_HANDSHAKE_SP_NO_DESTINATION = -38,
76 STREAM_HANDSHAKE_PARENT_VNODE_IS_LOCAL = -39, // sent by parent - DO NOT CHANGE
77
78 // terminator - keep this positive, bigger than all negative values
79 STREAM_HANDSHAKE_NEGATIVE_MAX = 40,
80 } STREAM_HANDSHAKE;
81
82 const char *stream_handshake_error_to_string(STREAM_HANDSHAKE reason);
83 int stream_handshake_error_to_response_code(STREAM_HANDSHAKE reason);
84
85 #endif //NETDATA_STREAM_HANDSHAKE_H