]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: connection: add names for transport and data layers
authorWilly Tarreau <w@1wt.eu>
Thu, 24 Nov 2016 15:58:12 +0000 (16:58 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 24 Nov 2016 15:58:12 +0000 (16:58 +0100)
This makes debugging easier and avoids having to put ugly checks
against certain well-known internal struct pointers.

include/proto/connection.h
include/types/connection.h
src/checks.c
src/raw_sock.c
src/session.c
src/ssl_sock.c
src/stream_interface.c

index 0724512c341b344d401a3fbf91d9ad540f62cce4..fce602599c51b5d9a8457a2523ba9359f9e46912 100644 (file)
@@ -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;
 }
 
 
index 11eff490c418513d5a7c194d0ffb297b33a0e37d..8b732ff757bccecc3441783f636d1a77e2d6f1b5 100644 (file)
@@ -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 {
index 84a0f583c1468d971a0495d7ecfc8020c88a3a1a..a9b89d0908480182176c252f615c32270b622306 100644 (file)
@@ -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",
 };
 
 /*
index c093377cfa89c74167b21a359f44b5f0ab51ad99..0883c57a6a4535ffdd727cf48b5f0bc9058b3848 100644 (file)
@@ -416,6 +416,7 @@ struct xprt_ops raw_sock = {
        .shutr    = NULL,
        .shutw    = NULL,
        .close    = NULL,
+       .name     = "RAW",
 };
 
 /*
index cdf57e388a26ddb034f3194827ac869c0fb3f625..93fdf5248cbdbd6666c64cd46838b5034f5b366c 100644 (file)
@@ -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 <fe>, listener <li>,
index ef03525fc51432f6eeed6c9af24cbc65ce300e11..c0e4d75fc6147e470096fec6a32275bf64d3e49c 100644 (file)
@@ -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)
index d39d7647efb98755a19072bf50f0f763eae1beec..4f93a2e2a7a47f2bf580071cbf69d3814114ddb6 100644 (file)
@@ -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",
 };
 
 /*