diff --git a/library/ssl_misc.h b/library/ssl_misc.h
index 082bc9b..10cb684 100644
--- a/library/ssl_misc.h
+++ b/library/ssl_misc.h
@@ -2934,8 +2934,37 @@
 {
     session->ticket_flags &= ~(flags & MBEDTLS_SSL_TLS1_3_TICKET_FLAGS_MASK);
 }
+
 #endif /* MBEDTLS_SSL_PROTO_TLS1_3 && MBEDTLS_SSL_SESSION_TICKETS */
 
+#if defined(MBEDTLS_SSL_SESSION_TICKETS) && defined(MBEDTLS_SSL_CLI_C)
+#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT 0
+#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT 1
+
+#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK \
+    (1 << MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT)
+#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_MASK \
+    (1 << MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT)
+
+static inline int mbedtls_ssl_conf_get_session_tickets(
+    const mbedtls_ssl_config *conf)
+{
+    return conf->session_tickets & MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK ?
+           MBEDTLS_SSL_SESSION_TICKETS_ENABLED :
+           MBEDTLS_SSL_SESSION_TICKETS_DISABLED;
+}
+
+#if defined(MBEDTLS_SSL_PROTO_TLS1_3)
+static inline int mbedtls_ssl_conf_is_new_session_tickets_enabled(
+    const mbedtls_ssl_config *conf)
+{
+    return conf->session_tickets & MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_MASK ?
+           MBEDTLS_SSL_NEW_SESSION_TICKETS_ENABLED :
+           MBEDTLS_SSL_NEW_SESSION_TICKETS_DISABLED;
+}
+#endif /* MBEDTLS_SSL_PROTO_TLS1_3 */
+#endif /* MBEDTLS_SSL_SESSION_TICKETS && MBEDTLS_SSL_CLI_C */
+
 #if defined(MBEDTLS_SSL_CLI_C) && defined(MBEDTLS_SSL_PROTO_TLS1_3)
 int mbedtls_ssl_tls13_finalize_client_hello(mbedtls_ssl_context *ssl);
 #endif
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 89588a4..fe1a1ef 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -3010,14 +3010,6 @@
 #if defined(MBEDTLS_SSL_SESSION_TICKETS)
 #if defined(MBEDTLS_SSL_CLI_C)
 
-#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT 0
-#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT 1
-
-#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK \
-    (1 << MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT)
-#define MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_MASK \
-    (1 << MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT)
-
 void mbedtls_ssl_conf_session_tickets(mbedtls_ssl_config *conf, int use_tickets)
 {
     conf->session_tickets &= ~MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK;
@@ -3025,13 +3017,6 @@
                              MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_BIT;
 }
 
-int mbedtls_ssl_conf_get_session_tickets(const mbedtls_ssl_config *conf)
-{
-    return conf->session_tickets & MBEDTLS_SSL_SESSION_TICKETS_TLS1_2_MASK ?
-           MBEDTLS_SSL_SESSION_TICKETS_ENABLED :
-           MBEDTLS_SSL_SESSION_TICKETS_DISABLED;
-}
-
 #if defined(MBEDTLS_SSL_PROTO_TLS1_3)
 void mbedtls_ssl_conf_enable_new_session_tickets(mbedtls_ssl_config *conf,
                                                  int use_new_session_tickets)
@@ -3040,13 +3025,6 @@
     conf->session_tickets |= (use_new_session_tickets != 0) <<
                              MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_BIT;
 }
-
-int mbedtls_ssl_conf_is_new_session_tickets_enabled(const mbedtls_ssl_config *conf)
-{
-    return conf->session_tickets & MBEDTLS_SSL_SESSION_TICKETS_TLS1_3_MASK ?
-           MBEDTLS_SSL_NEW_SESSION_TICKETS_ENABLED :
-           MBEDTLS_SSL_NEW_SESSION_TICKETS_DISABLED;
-}
 #endif /* MBEDTLS_SSL_PROTO_TLS1_3 */
 #endif /* MBEDTLS_SSL_CLI_C */
 
