diff options
-rw-r--r-- | lib/tsocket/tsocket.h | 12 | ||||
-rw-r--r-- | lib/tsocket/tsocket_bsd.c | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/lib/tsocket/tsocket.h b/lib/tsocket/tsocket.h index a008fd8232..d4f9e872d3 100644 --- a/lib/tsocket/tsocket.h +++ b/lib/tsocket/tsocket.h @@ -575,6 +575,16 @@ uint16_t tsocket_address_inet_port(const struct tsocket_address *addr); int tsocket_address_inet_set_port(struct tsocket_address *addr, uint16_t port); +/** + * @brief Find out if the tsocket_address represents an unix domain endpoint. + * + * @param[in] addr The tsocket_address pointer + * + * @return true if addr represents an unix domain endpoint, + * otherwise false. + */ +bool tsocket_address_is_unix(const struct tsocket_address *addr); + #ifdef DOXYGEN /** * @brief Create a tsocket_address for a unix domain endpoint addresses. @@ -586,6 +596,8 @@ int tsocket_address_inet_set_port(struct tsocket_address *addr, * @param[in] _addr The tsocket_address pointer to store the information. * * @return 0 on success, -1 on error with errno set. + * + * @see tsocket_address_is_unix() */ int tsocket_address_unix_from_path(TALLOC_CTX *mem_ctx, const char *path, diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c index 5adf9214c8..4a8a63e20b 100644 --- a/lib/tsocket/tsocket_bsd.c +++ b/lib/tsocket/tsocket_bsd.c @@ -503,6 +503,23 @@ int tsocket_address_inet_set_port(struct tsocket_address *addr, return 0; } +bool tsocket_address_is_unix(const struct tsocket_address *addr) +{ + struct tsocket_address_bsd *bsda = talloc_get_type(addr->private_data, + struct tsocket_address_bsd); + + if (!bsda) { + return false; + } + + switch (bsda->u.sa.sa_family) { + case AF_UNIX: + return true; + } + + return false; +} + int _tsocket_address_unix_from_path(TALLOC_CTX *mem_ctx, const char *path, struct tsocket_address **_addr, |