From: Samuel Cabrero Date: Mon, 18 Feb 2019 16:27:46 +0000 (+0100) Subject: lib:tsocket: New function to build a tsocket_context from samba_address X-Git-Tag: talloc-2.3.0~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8cb921d2550e4880d29ea7daf13b57fcb7d31936;p=thirdparty%2Fsamba.git lib:tsocket: New function to build a tsocket_context from samba_address Signed-off-by: Samuel Cabrero Reviewed-by: Stefan Metzmacher --- diff --git a/lib/tsocket/tsocket.h b/lib/tsocket/tsocket.h index 43f8881dbee..edefa7478e7 100644 --- a/lib/tsocket/tsocket.h +++ b/lib/tsocket/tsocket.h @@ -26,6 +26,7 @@ #include +struct samba_sockaddr; struct tsocket_address; struct tdgram_context; struct tstream_context; @@ -982,6 +983,32 @@ int _tsocket_address_bsd_from_sockaddr(TALLOC_CTX *mem_ctx, __location__) #endif +#ifdef DOXYGEN +/** + * @brief Convert a samba address to a tsocket address. + * + * @param[in] mem_ctx The talloc memory context to use. + * + * @param[in] s_addr The samba address structure to convert. + * + * @param[out] t_addr The tsocket pointer to allocate and fill. + * + * @return 0 on success, -1 on error with errno set. + */ +int tsocket_address_bsd_from_samba_sockaddr(TALLOC_CTX *mem_ctx, + const struct samba_sockaddr *s_addr, + struct tsocket_address **t_addr); +#else +int _tsocket_address_bsd_from_samba_sockaddr(TALLOC_CTX *mem_ctx, + const struct samba_sockaddr *s_addr, + struct tsocket_address **t_addr, + const char *location); + +#define tsocket_address_bsd_from_samba_sockaddr(mem_ctx, s_addr, t_addr) \ + _tsocket_address_bsd_from_samba_sockaddr(mem_ctx, s_addr, t_addr, \ + __location__) +#endif + /** * @brief Fill a bsd sockaddr structure. * diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c index b1834081c32..1627051f3ec 100644 --- a/lib/tsocket/tsocket_bsd.c +++ b/lib/tsocket/tsocket_bsd.c @@ -281,6 +281,18 @@ int _tsocket_address_bsd_from_sockaddr(TALLOC_CTX *mem_ctx, return 0; } +int _tsocket_address_bsd_from_samba_sockaddr(TALLOC_CTX *mem_ctx, + const struct samba_sockaddr *s_addr, + struct tsocket_address **t_addr, + const char *location) +{ + return _tsocket_address_bsd_from_sockaddr(mem_ctx, + &s_addr->u.sa, + s_addr->sa_socklen, + t_addr, + location); +} + ssize_t tsocket_address_bsd_sockaddr(const struct tsocket_address *addr, struct sockaddr *sa, size_t sa_socklen)