diff --git a/core/errcode.c b/core/errcode.c
index f817f4cd18aa69c63b3a8cb3bef734fb5e3445f3..c7bed55d1f597e3833592122ac94df3ab0311215 100644
--- a/core/errcode.c
+++ b/core/errcode.c
@@ -6,7 +6,7 @@
 	.errdesc = #d				\
 },
 
-struct errcode_record error_codes_records[error_codes_MAX] = {
+struct errcode_record tnt_error_codes[tnt_error_codes_enum_MAX] = {
 	ERROR_CODES(ERRCODE_RECORD_MEMBER)
 };
 
diff --git a/core/iproto.c b/core/iproto.c
index 6c462347a4c3695712bfe19935100527b2ec9112..2f8a97675e15e41ec7055a53d971918881c02c49 100644
--- a/core/iproto.c
+++ b/core/iproto.c
@@ -76,7 +76,7 @@ iproto_interact(void *data)
 				request->len = iproto(request)->len;
 				request->data = iproto(request)->data;
 				u32 err = callback(msg_code, request);
-				reply->ret_code = ERRCODE_VAL(error_codes, err);
+				reply->ret_code = tnt_errcode_val(err);
 
 				/*
 				 * retcode is uint32_t and included int struct iproto_header_retcode
diff --git a/include/errcode.h b/include/errcode.h
index 193d20e2fdce517abc64232126a397cae6a7910b..7f3d4d2c77ffa9e84e7da6d2a4529f34ff0a145f 100644
--- a/include/errcode.h
+++ b/include/errcode.h
@@ -7,14 +7,10 @@
 
 struct errcode_record {
 	const char *errstr;
-	uint32_t errflags;
 	const char *errdesc;
+	uint8_t errflags;
 };
 
-#define ERRCODE_STR(enum_name, err) (enum_name##_records[err].errstr)
-#define ERRCODE_VAL(enum_name, err) (((err) << 8) | enum_name##_records[err].errflags)
-#define ERRCODE_DESC(enum_name, err) (enum_name##_records[err].errdesc)
-
 #define ERROR_CODES(_)					    \
 	/*  0 */_(ERR_CODE_OK,				0, "OK") \
 	/*  1 */_(ERR_CODE_NONMASTER,			2, "Non master connection, but it should be") \
@@ -79,7 +75,34 @@ struct errcode_record {
 	/* 56 */_(ERR_CODE_INDEX_VIOLATION,		2, "Some index violation occur") \
 	/* 57 */_(ERR_CODE_NO_SUCH_NAMESPACE,		2, "There is no such namespace")
 
-ENUM0(error_codes, ERROR_CODES);
-extern struct errcode_record error_codes_records[];
+ENUM0(tnt_error_codes_enum, ERROR_CODES);
+extern struct errcode_record tnt_error_codes[];
+
+/**
+ * Return a string representation of error name, e.g.
+ * "ERR_CODE_OK".
+ */
+
+static inline const char *tnt_errcode_str(uint32_t errcode)
+{
+	return tnt_error_codes[errcode].errstr;
+}
+
+
+/** Return a 4-byte numeric error code, with status flags. */
+
+static inline uint32_t tnt_errcode_val(uint32_t errcode)
+{
+	return (errcode << 8) | tnt_error_codes[errcode].errflags;
+}
+
+
+/** Return a description of the error. */
+
+static inline const char *tnt_errcode_desc(uint32_t errcode)
+{
+	return tnt_error_codes[errcode].errdesc;
+}
+
 
-#endif
+#endif /* TARANTOOL_ERRCODE_H */
diff --git a/mod/silverbox/box.h b/mod/silverbox/box.h
index 4f5b6eef2cb7093cf592dc8e053af7418b6b1d6b..4eb09d600676ed399f0ae23473d1388e9cae6150 100644
--- a/mod/silverbox/box.h
+++ b/mod/silverbox/box.h
@@ -121,7 +121,7 @@ ENUM(messages, MESSAGES);
 #define box_raise(n, err)							\
 	({									\
 		if (n != ERR_CODE_NODE_IS_RO)					\
-			say_warn("%s/%s", ERRCODE_STR(error_codes, n), err);	\
+			say_warn("%s/%s", tnt_errcode_str(n), err);	\
 		raise(n, err);							\
 	})
 
diff --git a/mod/silverbox/memcached.c b/mod/silverbox/memcached.c
index eff4af693b647447c85472773c9851ff7c6d01bb..108134b100f9a43630db0839a5219badb254bb4a 100644
--- a/mod/silverbox/memcached.c
+++ b/mod/silverbox/memcached.c
@@ -260,8 +260,8 @@ memcached_dispatch(struct box_txn *txn)
 			add_iov("STORED\r\n", 8);					\
 		} else {								\
 			add_iov("SERVER_ERROR ", 13);					\
-			add_iov(ERRCODE_DESC(error_codes, ret_code),			\
-				strlen(ERRCODE_DESC(error_codes, ret_code)));		\
+			add_iov(tnt_errcode_desc(ret_code),			\
+				strlen(tnt_errcode_desc(ret_code)));		\
 			add_iov("\r\n", 2);						\
 		}									\
 	}										\
@@ -1078,8 +1078,8 @@ case 12:
 					add_iov("DELETED\r\n", 9);
 				else {
 					add_iov("SERVER_ERROR ", 13);
-					add_iov(ERRCODE_DESC(error_codes, ret_code),
-						strlen(ERRCODE_DESC(error_codes,ret_code)));
+					add_iov(tnt_errcode_desc(ret_code),
+						strlen(tnt_errcode_desc(ret_code)));
 					add_iov("\r\n", 2);
 				}
 			}
@@ -1112,8 +1112,8 @@ case 12:
 					add_iov("DELETED\r\n", 9);
 				else {
 					add_iov("SERVER_ERROR ", 13);
-					add_iov(ERRCODE_DESC(error_codes, ret_code),
-						strlen(ERRCODE_DESC(error_codes,ret_code)));
+					add_iov(tnt_errcode_desc(ret_code),
+						strlen(tnt_errcode_desc(ret_code)));
 					add_iov("\r\n", 2);
 				}
 			}
@@ -1142,8 +1142,8 @@ case 12:
 					add_iov("DELETED\r\n", 9);
 				else {
 					add_iov("SERVER_ERROR ", 13);
-					add_iov(ERRCODE_DESC(error_codes, ret_code),
-						strlen(ERRCODE_DESC(error_codes,ret_code)));
+					add_iov(tnt_errcode_desc(ret_code),
+						strlen(tnt_errcode_desc(ret_code)));
 					add_iov("\r\n", 2);
 				}
 			}
diff --git a/mod/silverbox/memcached.rl b/mod/silverbox/memcached.rl
index da7400fceca709fad1c5a446bd4b745162ab3fee..bacd6017d5f019f3dc300dd024169335fda6c402 100644
--- a/mod/silverbox/memcached.rl
+++ b/mod/silverbox/memcached.rl
@@ -251,8 +251,8 @@ memcached_dispatch(struct box_txn *txn)
 			add_iov("STORED\r\n", 8);					\
 		} else {								\
 			add_iov("SERVER_ERROR ", 13);					\
-			add_iov(ERRCODE_DESC(error_codes, ret_code),			\
-				strlen(ERRCODE_DESC(error_codes, ret_code)));		\
+			add_iov(tnt_errcode_desc(ret_code),			\
+				strlen(tnt_errcode_desc(ret_code)));		\
 			add_iov("\r\n", 2);						\
 		}									\
 	}										\
@@ -382,8 +382,8 @@ memcached_dispatch(struct box_txn *txn)
 					add_iov("DELETED\r\n", 9);
 				else {
 					add_iov("SERVER_ERROR ", 13);
-					add_iov(ERRCODE_DESC(error_codes, ret_code),
-						strlen(ERRCODE_DESC(error_codes,ret_code)));
+					add_iov(tnt_errcode_desc(ret_code),
+						strlen(tnt_errcode_desc(ret_code)));
 					add_iov("\r\n", 2);
 				}
 			}