+
+#define foreach_session_error \
+ _(NONE, "no error") \
+ _(UNKNOWN, "generic/unknown error") \
+ _(REFUSED, "refused") \
+ _(TIMEDOUT, "timedout") \
+ _(ALLOC, "obj/memory allocation error") \
+ _(NOROUTE, "no route") \
+ _(NOINTF, "no resolving interface") \
+ _(NOIP, "no ip for lcl interface") \
+ _(NOPORT, "no lcl port") \
+ _(NOSUPPORT, "not supported") \
+ _(PORTINUSE, "lcl port in use") \
+ _(IPINUSE, "ip in use") \
+ _(ALREADY_LISTENING, "ip port pair already listened on") \
+ _(INVALID_RMT_IP, "invalid remote ip") \
+ _(SEG_NO_SPACE, "Couldn't allocate a fifo pair") \
+ _(SEG_NO_SPACE2, "Created segment, couldn't allocate a fifo pair") \
+ _(SEG_CREATE, "Couldn't create a new segment") \
+ _(FILTERED, "session filtered") \
+ _(SCOPE, "scope not supported") \
+ _(BAPI_NO_FD, "bapi doesn't have a socket fd") \
+ _(BAPI_SEND_FD, "couldn't send fd over bapi socket fd") \
+ _(BAPI_NO_REG, "app bapi registration not found") \
+ _(MQ_MSG_ALLOC, "failed to alloc mq msg") \
+ _(TLS_HANDSHAKE, "failed tls handshake") \
+
+typedef enum session_error_p_
+{
+#define _(sym, str) SESSION_EP_##sym,
+ foreach_session_error
+#undef _
+ SESSION_N_ERRORS
+} session_error_p_t;
+
+typedef enum session_error_
+{
+#define _(sym, str) SESSION_E_##sym = -SESSION_EP_##sym,
+ foreach_session_error
+#undef _
+} session_error_t;
+
+/* Maintained for compatibility. Will be deprecated */
+#define SESSION_ERROR_SEG_CREATE SESSION_E_SEG_CREATE
+#define SESSION_ERROR_NO_SPACE SESSION_E_SEG_NO_SPACE
+#define SESSION_ERROR_NEW_SEG_NO_SPACE SESSION_E_SEG_NO_SPACE2
+