lib:tsocket: New function to build a tsocket_context from samba_address
authorSamuel Cabrero <scabrero@suse.de>
Mon, 18 Feb 2019 16:27:46 +0000 (17:27 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 22 Jul 2019 16:49:14 +0000 (16:49 +0000)
Signed-off-by: Samuel Cabrero <scabrero@suse.de>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/tsocket/tsocket.h
lib/tsocket/tsocket_bsd.c

index 43f8881dbee68deefbaf6839b06ef8d313d1ea7b..edefa7478e744a16b9b7d4890b4ee23bd4783763 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <tevent.h>
 
+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.
  *
index b1834081c325a9d6958828afab62e0f3e5c8e3e5..1627051f3ec548f46f27b4b87c4a29e5f71df7af 100644 (file)
@@ -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)