docs: fix a typo in history file
[bbaumbach/samba-autobuild/.git] / source4 / lib / socket / socket.h
index 24bc5f1aacdcb02a430b68b4e1b8f4592f26fa3b..d0fb5e0bfca0cdb17af6ac16d7a15711907cf491 100644 (file)
@@ -20,8 +20,8 @@
 #ifndef _SAMBA_SOCKET_H
 #define _SAMBA_SOCKET_H
 
-#include "lib/events/events.h"
-
+struct tevent_context;
+struct tevent_fd;
 struct socket_context;
 
 enum socket_type {
@@ -98,7 +98,6 @@ enum socket_state {
        SOCKET_STATE_SERVER_ERROR
 };
 
-#define SOCKET_FLAG_BLOCK        0x00000001
 #define SOCKET_FLAG_PEEK         0x00000002
 #define SOCKET_FLAG_TESTNONBLOCK 0x00000004
 #define SOCKET_FLAG_ENCRYPT      0x00000008 /* This socket
@@ -126,12 +125,15 @@ struct socket_context {
        int family;
 };
 
+struct resolve_context;
+struct tsocket_address;
 
 /* prototypes */
 NTSTATUS socket_create_with_ops(TALLOC_CTX *mem_ctx, const struct socket_ops *ops,
                                struct socket_context **new_sock, 
                                enum socket_type type, uint32_t flags);
-NTSTATUS socket_create(const char *name, enum socket_type type, 
+NTSTATUS socket_create(TALLOC_CTX *mem_ctx,
+                      const char *name, enum socket_type type,
                       struct socket_context **new_sock, uint32_t flags);
 NTSTATUS socket_connect(struct socket_context *sock,
                        const struct socket_address *my_address, 
@@ -157,6 +159,12 @@ NTSTATUS socket_set_option(struct socket_context *sock, const char *option, cons
 char *socket_get_peer_name(struct socket_context *sock, TALLOC_CTX *mem_ctx);
 struct socket_address *socket_get_peer_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx);
 struct socket_address *socket_get_my_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx);
+struct tsocket_address *socket_address_to_tsocket_address(TALLOC_CTX *mem_ctx,
+                                                         const struct socket_address *a);
+struct socket_address *tsocket_address_to_socket_address(TALLOC_CTX *mem_ctx,
+                                                        const struct tsocket_address *a);
+struct tsocket_address *socket_get_remote_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx);
+struct tsocket_address *socket_get_local_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx);
 int socket_get_fd(struct socket_context *sock);
 NTSTATUS socket_dup(struct socket_context *sock);
 struct socket_address *socket_address_from_strings(TALLOC_CTX *mem_ctx,
@@ -166,10 +174,15 @@ struct socket_address *socket_address_from_strings(TALLOC_CTX *mem_ctx,
 struct socket_address *socket_address_from_sockaddr(TALLOC_CTX *mem_ctx, 
                                                    struct sockaddr *sockaddr, 
                                                    size_t addrlen);
+struct sockaddr_storage;
+struct socket_address *socket_address_from_sockaddr_storage(TALLOC_CTX *mem_ctx,
+                                                           const struct sockaddr_storage *sockaddr,
+                                                           uint16_t port);
+_PUBLIC_ void socket_address_set_port(struct socket_address *a,
+                                     uint16_t port);
+struct socket_address *socket_address_copy(TALLOC_CTX *mem_ctx,
+                                          const struct socket_address *oaddr);
 const struct socket_ops *socket_getops_byname(const char *name, enum socket_type type);
-bool allow_access(TALLOC_CTX *mem_ctx,
-                 const char **deny_list, const char **allow_list,
-                 const char *cname, const char *caddr);
 bool socket_check_access(struct socket_context *sock, 
                         const char *service_name,
                         const char **allow_list, const char **deny_list);
@@ -178,33 +191,66 @@ struct composite_context *socket_connect_send(struct socket_context *sock,
                                              struct socket_address *my_address,
                                              struct socket_address *server_address, 
                                              uint32_t flags,
-                                             const char **name_resolve_order,
-                                             struct event_context *event_ctx);
+                                             struct tevent_context *event_ctx);
 NTSTATUS socket_connect_recv(struct composite_context *ctx);
 NTSTATUS socket_connect_ev(struct socket_context *sock,
                           struct socket_address *my_address,
                           struct socket_address *server_address, 
                           uint32_t flags, 
-                          const char **name_resolve_order,
-                          struct event_context *ev);
+                          struct tevent_context *ev);
+
+struct socket_connect_multi_ex {
+       void *private_data;
+       struct tevent_req *(*establish_send)(TALLOC_CTX *mem_ctx,
+                                            struct tevent_context *ev,
+                                            struct socket_context *sock,
+                                            struct socket_address *addr,
+                                            void *private_data);
+       NTSTATUS (*establish_recv)(struct tevent_req *req);
+};
+struct composite_context *socket_connect_multi_ex_send(TALLOC_CTX *mem_ctx,
+                                                      const char *server_address,
+                                                      int num_server_ports,
+                                                      uint16_t *server_ports,
+                                                      struct resolve_context *resolve_ctx,
+                                                      struct tevent_context *event_ctx,
+                                                      struct socket_connect_multi_ex *ex);
+NTSTATUS socket_connect_multi_ex_recv(struct composite_context *ctx,
+                                     TALLOC_CTX *mem_ctx,
+                                     struct socket_context **result,
+                                     uint16_t *port);
+NTSTATUS socket_connect_multi_ex(TALLOC_CTX *mem_ctx, const char *server_address,
+                                int num_server_ports, uint16_t *server_ports,
+                                struct resolve_context *resolve_ctx,
+                                struct tevent_context *event_ctx,
+                                struct socket_connect_multi_ex *ex,
+                                struct socket_context **result,
+                                uint16_t *port);
 
 struct composite_context *socket_connect_multi_send(TALLOC_CTX *mem_ctx,
                                                    const char *server_address,
                                                    int num_server_ports,
                                                    uint16_t *server_ports,
-                                                   const char **name_resolve_order,
-                                                   struct event_context *event_ctx);
+                                                   struct resolve_context *resolve_ctx,
+                                                   struct tevent_context *event_ctx);
 NTSTATUS socket_connect_multi_recv(struct composite_context *ctx,
                                   TALLOC_CTX *mem_ctx,
                                   struct socket_context **result,
                                   uint16_t *port);
 NTSTATUS socket_connect_multi(TALLOC_CTX *mem_ctx, const char *server_address,
                              int num_server_ports, uint16_t *server_ports,
-                             const char **name_resolve_order,
-                             struct event_context *event_ctx,
+                             struct resolve_context *resolve_ctx,
+                             struct tevent_context *event_ctx,
                              struct socket_context **result,
                              uint16_t *port);
 void set_socket_options(int fd, const char *options);
-void socket_set_flags(struct socket_context *socket, unsigned flags);
+void socket_set_flags(struct socket_context *sock, unsigned flags);
+
+void socket_tevent_fd_close_fn(struct tevent_context *ev,
+                              struct tevent_fd *fde,
+                              int fd,
+                              void *private_data);
+
+extern bool testnonblock;
 
 #endif /* _SAMBA_SOCKET_H */