root/source4/libcli/resolve/wins.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. resolve_name_wins_send
  2. resolve_name_wins_recv
  3. resolve_context_add_wins_method
  4. resolve_context_add_wins_method_lp

   1 /* 
   2    Unix SMB/CIFS implementation.
   3 
   4    wins name resolution module
   5 
   6    Copyright (C) Andrew Tridgell 2005
   7    
   8    This program is free software; you can redistribute it and/or modify
   9    it under the terms of the GNU General Public License as published by
  10    the Free Software Foundation; either version 3 of the License, or
  11    (at your option) any later version.
  12    
  13    This program is distributed in the hope that it will be useful,
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16    GNU General Public License for more details.
  17    
  18    You should have received a copy of the GNU General Public License
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  20 */
  21 
  22 #include "includes.h"
  23 #include "../libcli/nbt/libnbt.h"
  24 #include "libcli/resolve/resolve.h"
  25 #include "param/param.h"
  26 #include "lib/socket/socket.h"
  27 #include "lib/socket/netif.h"
  28 
  29 struct resolve_wins_data {
  30         const char **address_list;
  31         struct interface *ifaces;
  32         uint16_t nbt_port;
  33         int nbt_timeout;
  34 };
  35 
  36 /**
  37   wins name resolution method - async send
  38  */
  39 struct composite_context *resolve_name_wins_send(
     /* [<][>][^][v][top][bottom][index][help] */
  40                                 TALLOC_CTX *mem_ctx, 
  41                                 struct tevent_context *event_ctx,
  42                                 void *userdata,
  43                                 uint32_t flags,
  44                                 uint16_t port,
  45                                 struct nbt_name *name)
  46 {
  47         struct resolve_wins_data *wins_data = talloc_get_type(userdata, struct resolve_wins_data);
  48         if (wins_data->address_list == NULL) return NULL;
  49         return resolve_name_nbtlist_send(mem_ctx, event_ctx, flags, port, name,
  50                                          wins_data->address_list, wins_data->ifaces,
  51                                          wins_data->nbt_port, wins_data->nbt_timeout,
  52                                          false, true);
  53 }
  54 
  55 /*
  56   wins name resolution method - recv side
  57  */
  58 NTSTATUS resolve_name_wins_recv(struct composite_context *c, 
     /* [<][>][^][v][top][bottom][index][help] */
  59                                 TALLOC_CTX *mem_ctx,
  60                                 struct socket_address ***addrs,
  61                                 char ***names)
  62 {
  63         return resolve_name_nbtlist_recv(c, mem_ctx, addrs, names);
  64 }
  65 
  66 bool resolve_context_add_wins_method(struct resolve_context *ctx, const char **address_list, struct interface *ifaces, uint16_t nbt_port, int nbt_timeout)
     /* [<][>][^][v][top][bottom][index][help] */
  67 {
  68         struct resolve_wins_data *wins_data = talloc(ctx, struct resolve_wins_data);
  69         wins_data->address_list = (const char **)str_list_copy(wins_data, address_list);
  70         wins_data->ifaces = talloc_reference(wins_data, ifaces);
  71         wins_data->nbt_port = nbt_port;
  72         wins_data->nbt_timeout = nbt_timeout;
  73         return resolve_context_add_method(ctx, resolve_name_wins_send, resolve_name_wins_recv,
  74                                           wins_data);
  75 }
  76 
  77 bool resolve_context_add_wins_method_lp(struct resolve_context *ctx, struct loadparm_context *lp_ctx)
     /* [<][>][^][v][top][bottom][index][help] */
  78 {
  79         struct interface *ifaces;
  80         load_interfaces(ctx, lp_interfaces(lp_ctx), &ifaces);
  81         return resolve_context_add_wins_method(ctx, lp_wins_server_list(lp_ctx), ifaces, lp_nbt_port(lp_ctx), lp_parm_int(lp_ctx, NULL, "nbt", "timeout", 1));
  82 }

/* [<][>][^][v][top][bottom][index][help] */