From: Willy Tarreau Date: Thu, 24 Nov 2016 15:58:12 +0000 (+0100) Subject: MINOR: connection: add names for transport and data layers X-Git-Tag: v1.7.0~64 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e0bb0ae16599f89be3f0937c00976ef28ec7f25;p=thirdparty%2Fhaproxy.git MINOR: connection: add names for transport and data layers This makes debugging easier and avoids having to put ugly checks against certain well-known internal struct pointers. --- diff --git a/include/proto/connection.h b/include/proto/connection.h index 0724512c34..fce602599c 100644 --- a/include/proto/connection.h +++ b/include/proto/connection.h @@ -607,45 +607,16 @@ static inline const char *conn_get_ctrl_name(const struct connection *conn) static inline const char *conn_get_xprt_name(const struct connection *conn) { - static char ptr[19]; /* 0x... */ - extern struct xprt_ops raw_sock; // should theorically not be exported - extern struct xprt_ops ssl_sock; // should theorically not be exported - if (!conn_xprt_ready(conn)) return "NONE"; - - if (conn->xprt == &raw_sock) - return "RAW"; - -#ifdef USE_OPENSSL - if (conn->xprt == &ssl_sock) - return "SSL"; -#endif - snprintf(ptr, sizeof(ptr), "%p", conn->xprt); - return ptr; + return conn->xprt->name; } static inline const char *conn_get_data_name(const struct connection *conn) { - static char ptr[19]; /* 0x... */ - extern struct data_cb sess_conn_cb; // should theorically not be exported - extern struct data_cb si_conn_cb; // should theorically not be exported - extern struct data_cb check_conn_cb; // should theorically not be exported - if (!conn->data) return "NONE"; - - if (conn->data == &sess_conn_cb) - return "SESS"; - - if (conn->data == &si_conn_cb) - return "STRM"; - - if (conn->data == &check_conn_cb) - return "CHCK"; - - snprintf(ptr, sizeof(ptr), "%p", conn->data); - return ptr; + return conn->data->name; } diff --git a/include/types/connection.h b/include/types/connection.h index 11eff490c4..8b732ff757 100644 --- a/include/types/connection.h +++ b/include/types/connection.h @@ -213,6 +213,7 @@ struct xprt_ops { void (*shutw)(struct connection *, int); /* shutw function */ void (*close)(struct connection *); /* close the transport layer */ int (*init)(struct connection *conn); /* initialize the transport layer */ + char name[8]; /* transport layer name, zero-terminated */ }; /* data_cb describes the data layer's recv and send callbacks which are called @@ -230,6 +231,7 @@ struct data_cb { void (*send)(struct connection *conn); /* data-layer send callback */ int (*wake)(struct connection *conn); /* data-layer callback to report activity */ int (*init)(struct connection *conn); /* data-layer initialization */ + char name[8]; /* data layer name, zero-terminated */ }; struct my_tcphdr { diff --git a/src/checks.c b/src/checks.c index 84a0f583c1..a9b89d0908 100644 --- a/src/checks.c +++ b/src/checks.c @@ -1414,6 +1414,7 @@ struct data_cb check_conn_cb = { .recv = event_srv_chk_r, .send = event_srv_chk_w, .wake = wake_srv_chk, + .name = "CHCK", }; /* diff --git a/src/raw_sock.c b/src/raw_sock.c index c093377cfa..0883c57a6a 100644 --- a/src/raw_sock.c +++ b/src/raw_sock.c @@ -416,6 +416,7 @@ struct xprt_ops raw_sock = { .shutr = NULL, .shutw = NULL, .close = NULL, + .name = "RAW", }; /* diff --git a/src/session.c b/src/session.c index cdf57e388a..93fdf5248c 100644 --- a/src/session.c +++ b/src/session.c @@ -41,6 +41,7 @@ struct data_cb sess_conn_cb = { .send = NULL, .wake = conn_update_session, .init = conn_complete_session, + .name = "SESS", }; /* Create a a new session and assign it to frontend , listener
  • , diff --git a/src/ssl_sock.c b/src/ssl_sock.c index ef03525fc5..c0e4d75fc6 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -6127,6 +6127,7 @@ struct xprt_ops ssl_sock = { .shutw = ssl_sock_shutw, .close = ssl_sock_close, .init = ssl_sock_init, + .name = "SSL", }; #if (OPENSSL_VERSION_NUMBER >= 0x1000200fL && !defined OPENSSL_NO_TLSEXT && !defined OPENSSL_IS_BORINGSSL && !defined LIBRESSL_VERSION_NUMBER) diff --git a/src/stream_interface.c b/src/stream_interface.c index d39d7647ef..4f93a2e2a7 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -86,12 +86,14 @@ struct data_cb si_conn_cb = { .recv = si_conn_recv_cb, .send = si_conn_send_cb, .wake = si_conn_wake_cb, + .name = "STRM", }; struct data_cb si_idle_conn_cb = { .recv = si_idle_conn_null_cb, .send = si_idle_conn_null_cb, .wake = si_idle_conn_wake_cb, + .name = "IDLE", }; /*