LCOV - code coverage report
Current view: top level - source4/libcli/resolve - wins.c (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 19 19 100.0 %
Date: 2024-04-21 15:09:00 Functions: 4 4 100.0 %

          Line data    Source code
       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             :         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       53785 : struct composite_context *resolve_name_wins_send(
      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       53785 :         struct resolve_wins_data *wins_data = talloc_get_type(userdata, struct resolve_wins_data);
      48       53785 :         if (wins_data->address_list == NULL) return NULL;
      49       17093 :         return resolve_name_nbtlist_send(mem_ctx, event_ctx, flags, port, name,
      50       17091 :                                          (const char * const *)wins_data->address_list,
      51             :                                          wins_data->ifaces,
      52       17093 :                                          wins_data->nbt_port, wins_data->nbt_timeout,
      53             :                                          false, true);
      54             : }
      55             : 
      56             : /*
      57             :   wins name resolution method - recv side
      58             :  */
      59       17093 : NTSTATUS resolve_name_wins_recv(struct composite_context *c, 
      60             :                                 TALLOC_CTX *mem_ctx,
      61             :                                 struct socket_address ***addrs,
      62             :                                 char ***names)
      63             : {
      64       17093 :         return resolve_name_nbtlist_recv(c, mem_ctx, addrs, names);
      65             : }
      66             : 
      67       67003 : bool resolve_context_add_wins_method(struct resolve_context *ctx, const char **address_list, struct interface *ifaces, uint16_t nbt_port, int nbt_timeout)
      68             : {
      69       67003 :         struct resolve_wins_data *wins_data = talloc(ctx, struct resolve_wins_data);
      70       67003 :         wins_data->address_list = str_list_copy(wins_data, address_list);
      71       67003 :         wins_data->ifaces = talloc_reference(wins_data, ifaces);
      72       67003 :         wins_data->nbt_port = nbt_port;
      73       67003 :         wins_data->nbt_timeout = nbt_timeout;
      74       67003 :         return resolve_context_add_method(ctx, resolve_name_wins_send, resolve_name_wins_recv,
      75             :                                           wins_data);
      76             : }
      77             : 
      78       67003 : bool resolve_context_add_wins_method_lp(struct resolve_context *ctx, struct loadparm_context *lp_ctx)
      79             : {
      80        1322 :         struct interface *ifaces;
      81       67003 :         load_interface_list(ctx, lp_ctx, &ifaces);
      82       67003 :         return resolve_context_add_wins_method(ctx, lpcfg_wins_server_list(lp_ctx), ifaces, lpcfg_nbt_port(lp_ctx), lpcfg_parm_int(lp_ctx, NULL, "nbt", "timeout", 1));
      83             : }

Generated by: LCOV version 1.14