/src/tarantool/src/box/node_name.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * SPDX-License-Identifier: BSD-2-Clause |
3 | | * |
4 | | * Copyright 2010-2023, Tarantool AUTHORS, please see AUTHORS file. |
5 | | */ |
6 | | #pragma once |
7 | | |
8 | | #include <assert.h> |
9 | | #include <stdbool.h> |
10 | | #include <stddef.h> |
11 | | #include <string.h> |
12 | | |
13 | | /** |
14 | | * Name suitable for a node visible in the network. Its format matches the |
15 | | * sub-domain label in RFC 1035, section 2.3.1 |
16 | | * (https://www.rfc-editor.org/rfc/rfc1035#section-2.3.1). |
17 | | * |
18 | | * It allows to use the node name as a sub-domain and a host name. |
19 | | * |
20 | | * The limitations are: max 63 symbols (not including term 0); only lowercase |
21 | | * letters, digits, and hyphen. Can start only with a letter. Note that the |
22 | | * sub-domain name rules say that uppercase is allowed but the names are |
23 | | * case-insensitive. In Tarantool the lowercase is enforced. |
24 | | */ |
25 | | |
26 | | enum { |
27 | | NODE_NAME_LEN_MAX = 63, |
28 | | NODE_NAME_SIZE_MAX = NODE_NAME_LEN_MAX + 1, |
29 | | }; |
30 | | |
31 | | #if defined(__cplusplus) |
32 | | extern "C" { |
33 | | #endif /* defined(__cplusplus) */ |
34 | | |
35 | | /** Check if the node name of the given length is valid. */ |
36 | | bool |
37 | | node_name_is_valid_n(const char *name, size_t len); |
38 | | |
39 | | static inline bool |
40 | | node_name_is_valid(const char *name) |
41 | 0 | { |
42 | 0 | return node_name_is_valid_n(name, strnlen(name, NODE_NAME_SIZE_MAX)); |
43 | 0 | } Unexecuted instantiation: box.cc:node_name_is_valid(char const*) Unexecuted instantiation: txn_limbo.c:node_name_is_valid Unexecuted instantiation: txn.c:node_name_is_valid Unexecuted instantiation: memtx_space.c:node_name_is_valid Unexecuted instantiation: memtx_engine.cc:node_name_is_valid(char const*) Unexecuted instantiation: space.c:node_name_is_valid Unexecuted instantiation: session_settings.c:node_name_is_valid Unexecuted instantiation: alter.cc:node_name_is_valid(char const*) Unexecuted instantiation: iproto.cc:node_name_is_valid(char const*) Unexecuted instantiation: request.c:node_name_is_valid Unexecuted instantiation: raft.c:node_name_is_valid Unexecuted instantiation: vinyl.c:node_name_is_valid Unexecuted instantiation: vy_stmt.c:node_name_is_valid Unexecuted instantiation: vy_run.c:node_name_is_valid Unexecuted instantiation: vy_log.c:node_name_is_valid Unexecuted instantiation: vy_scheduler.c:node_name_is_valid Unexecuted instantiation: xrow_io.cc:node_name_is_valid(char const*) Unexecuted instantiation: blackhole.c:node_name_is_valid Unexecuted instantiation: replication.cc:node_name_is_valid(char const*) Unexecuted instantiation: recovery.cc:node_name_is_valid(char const*) Unexecuted instantiation: applier.cc:node_name_is_valid(char const*) Unexecuted instantiation: relay.cc:node_name_is_valid(char const*) Unexecuted instantiation: sql.c:node_name_is_valid Unexecuted instantiation: execute.c:node_name_is_valid Unexecuted instantiation: wal.c:node_name_is_valid Unexecuted instantiation: call.c:node_name_is_valid Unexecuted instantiation: misc.cc:node_name_is_valid(char const*) Unexecuted instantiation: iproto.c:node_name_is_valid Unexecuted instantiation: xrow.c:node_name_is_valid Unexecuted instantiation: xlog.c:node_name_is_valid Unexecuted instantiation: node_name.c:node_name_is_valid |
44 | | |
45 | | static inline const char * |
46 | | node_name_str(const char *name) |
47 | 0 | { |
48 | 0 | if (name == NULL || *name == 0) |
49 | 0 | return "<no-name>"; |
50 | 0 | return name; |
51 | 0 | } Unexecuted instantiation: box.cc:node_name_str(char const*) Unexecuted instantiation: txn_limbo.c:node_name_str Unexecuted instantiation: txn.c:node_name_str Unexecuted instantiation: memtx_space.c:node_name_str Unexecuted instantiation: memtx_engine.cc:node_name_str(char const*) Unexecuted instantiation: space.c:node_name_str Unexecuted instantiation: session_settings.c:node_name_str Unexecuted instantiation: alter.cc:node_name_str(char const*) Unexecuted instantiation: iproto.cc:node_name_str(char const*) Unexecuted instantiation: request.c:node_name_str Unexecuted instantiation: raft.c:node_name_str Unexecuted instantiation: vinyl.c:node_name_str Unexecuted instantiation: vy_stmt.c:node_name_str Unexecuted instantiation: vy_run.c:node_name_str Unexecuted instantiation: vy_log.c:node_name_str Unexecuted instantiation: vy_scheduler.c:node_name_str Unexecuted instantiation: xrow_io.cc:node_name_str(char const*) Unexecuted instantiation: blackhole.c:node_name_str Unexecuted instantiation: replication.cc:node_name_str(char const*) Unexecuted instantiation: recovery.cc:node_name_str(char const*) Unexecuted instantiation: applier.cc:node_name_str(char const*) Unexecuted instantiation: relay.cc:node_name_str(char const*) Unexecuted instantiation: sql.c:node_name_str Unexecuted instantiation: execute.c:node_name_str Unexecuted instantiation: wal.c:node_name_str Unexecuted instantiation: call.c:node_name_str Unexecuted instantiation: misc.cc:node_name_str(char const*) Unexecuted instantiation: iproto.c:node_name_str Unexecuted instantiation: xrow.c:node_name_str Unexecuted instantiation: xlog.c:node_name_str Unexecuted instantiation: node_name.c:node_name_str |
52 | | |
53 | | #if defined(__cplusplus) |
54 | | } |
55 | | #endif /* defined(__cplusplus) */ |