s3: libsmb: Add internal_resolve_name_sa(). A wrapper for internal_resolve_name().
[amitay/samba.git] / source3 / libsmb / namequery.h
1 /*
2  * Unix SMB/CIFS implementation.
3  * Copyright (C) Volker Lendecke 2018
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef __LIBSMB_NAMEQUERY_H__
20 #define __LIBSMB_NAMEQUERY_H__
21
22 #include "includes.h"
23 #include <tevent.h>
24
25 /* The following definitions come from libsmb/namequery.c  */
26 bool sockaddr_storage_to_samba_sockaddr(struct samba_sockaddr *sa,
27                                         const struct sockaddr_storage *ss);
28 bool saf_store( const char *domain, const char *servername );
29 bool saf_join_store( const char *domain, const char *servername );
30 bool saf_delete( const char *domain );
31 char *saf_fetch(TALLOC_CTX *mem_ctx, const char *domain );
32 struct tevent_req *node_status_query_send(TALLOC_CTX *mem_ctx,
33                                           struct tevent_context *ev,
34                                           struct nmb_name *name,
35                                           const struct sockaddr_storage *addr);
36 NTSTATUS node_status_query_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
37                                 struct node_status **pnode_status,
38                                 size_t *pnum_names,
39                                 struct node_status_extra *extra);
40 NTSTATUS node_status_query(TALLOC_CTX *mem_ctx, struct nmb_name *name,
41                            const struct sockaddr_storage *addr,
42                            struct node_status **pnode_status,
43                            size_t *pnum_names,
44                            struct node_status_extra *extra);
45 bool name_status_find(const char *q_name,
46                         int q_type,
47                         int type,
48                         const struct sockaddr_storage *to_ss,
49                         fstring name);
50 size_t remove_duplicate_addrs2(struct ip_service *iplist, size_t count );
51 size_t remove_duplicate_addrs2_sa(struct samba_sockaddr *salist, size_t count);
52 struct tevent_req *name_query_send(TALLOC_CTX *mem_ctx,
53                                    struct tevent_context *ev,
54                                    const char *name, int name_type,
55                                    bool bcast, bool recurse,
56                                    const struct sockaddr_storage *addr);
57 NTSTATUS name_query_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
58                          struct sockaddr_storage **addrs, size_t *num_addrs,
59                          uint8_t *flags);
60 NTSTATUS name_query(const char *name, int name_type,
61                     bool bcast, bool recurse,
62                     const struct sockaddr_storage *to_ss,
63                     TALLOC_CTX *mem_ctx,
64                     struct sockaddr_storage **addrs,
65                     size_t *num_addrs, uint8_t *flags);
66 struct tevent_req *name_resolve_bcast_send(TALLOC_CTX *mem_ctx,
67                                            struct tevent_context *ev,
68                                            const char *name,
69                                            int name_type);
70 NTSTATUS name_resolve_bcast_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
71                                  struct sockaddr_storage **addrs,
72                                  size_t *num_addrs);
73 NTSTATUS name_resolve_bcast(TALLOC_CTX *mem_ctx,
74                         const char *name,
75                         int name_type,
76                         struct sockaddr_storage **return_iplist,
77                         size_t *return_count);
78 struct tevent_req *resolve_wins_send(TALLOC_CTX *mem_ctx,
79                                      struct tevent_context *ev,
80                                      const char *name,
81                                      int name_type);
82 NTSTATUS resolve_wins_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
83                            struct sockaddr_storage **addrs,
84                            size_t *num_addrs, uint8_t *flags);
85 NTSTATUS resolve_wins(TALLOC_CTX *mem_ctx,
86                 const char *name,
87                 int name_type,
88                 struct sockaddr_storage **return_iplist,
89                 size_t *return_count);
90 NTSTATUS dns_lookup_list_async(TALLOC_CTX *ctx,
91                                size_t num_dns_names,
92                                const char **dns_lookup_names,
93                                size_t *p_num_addrs,
94                                struct samba_sockaddr **pp_addrs,
95                                char ***pp_dns_names);
96 NTSTATUS internal_resolve_name(TALLOC_CTX *ctx,
97                                 const char *name,
98                                 int name_type,
99                                 const char *sitename,
100                                 struct ip_service **return_iplist,
101                                 size_t *ret_count,
102                                 const char **resolve_order);
103 NTSTATUS internal_resolve_name_sa(TALLOC_CTX *ctx,
104                                 const char *name,
105                                 int name_type,
106                                 const char *sitename,
107                                 struct samba_sockaddr **return_salist,
108                                 size_t *ret_count,
109                                 const char **resolve_order);
110 bool resolve_name(const char *name,
111                 struct sockaddr_storage *return_ss,
112                 int name_type,
113                 bool prefer_ipv4);
114 NTSTATUS resolve_name_list(TALLOC_CTX *ctx,
115                 const char *name,
116                 int name_type,
117                 struct sockaddr_storage **return_ss_arr,
118                 unsigned int *p_num_entries);
119 bool find_master_ip(const char *group, struct sockaddr_storage *master_ss);
120 bool get_pdc_ip(const char *domain, struct sockaddr_storage *pss);
121 NTSTATUS get_sorted_dc_list(TALLOC_CTX *ctx,
122                         const char *domain,
123                         const char *sitename,
124                         struct samba_sockaddr **sa_list_ret,
125                         size_t *ret_count,
126                         bool ads_only);
127 NTSTATUS get_kdc_list(TALLOC_CTX *ctx,
128                         const char *realm,
129                         const char *sitename,
130                         struct samba_sockaddr **sa_list_ret,
131                         size_t *ret_count);
132 #endif