From cc6fc26bfe796b79f5355ddd35f85e32630fb07a Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 22 Oct 2021 16:33:28 +0200 Subject: [PATCH] MINOR: connection: Add function to get src/dst without updating the connection conn_get_src() and conn_get_dst() functions are used to fill the source and destination addresses of a connection. On success, ->src and ->dst connection fields can be safely used. For convenience, 2 new functions are added here: conn_src() and conn_dst(). These functions return the corresponding address, as a const and only if it is already set. Otherwise NULL is returned. --- include/haproxy/connection.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/haproxy/connection.h b/include/haproxy/connection.h index a140aa7ba..bacf7ca44 100644 --- a/include/haproxy/connection.h +++ b/include/haproxy/connection.h @@ -407,6 +407,22 @@ static inline struct connection *cs_conn(const struct conn_stream *cs) return cs ? cs->conn : NULL; } +/* Returns the source address of the connection or NULL if not set */ +static inline const struct sockaddr_storage *conn_src(struct connection *conn) +{ + if (conn->flags & CO_FL_ADDR_FROM_SET) + return conn->src; + return NULL; +} + +/* Returns the destination address of the connection or NULL if not set */ +static inline const struct sockaddr_storage *conn_dst(struct connection *conn) +{ + if (conn->flags & CO_FL_ADDR_TO_SET) + return conn->dst; + return NULL; +} + /* Retrieves the connection's original source address. Returns non-zero on * success or zero on failure. The operation is only performed once and the * address is stored in the connection for future use.