summaryrefslogtreecommitdiff
path: root/source4/nbt_server/wins/winswack.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-10-14 12:49:55 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:42:16 -0500
commit4c297bac9dd90f399d065c4d6449b934b3846704 (patch)
treea18db53dec4992d740cc14eae5e2a55d88a94a43 /source4/nbt_server/wins/winswack.c
parent1d55354663bfacad2128ca39201c4917c6f82d64 (diff)
downloadsamba-4c297bac9dd90f399d065c4d6449b934b3846704.tar.gz
samba-4c297bac9dd90f399d065c4d6449b934b3846704.tar.bz2
samba-4c297bac9dd90f399d065c4d6449b934b3846704.zip
r11026: r10318@SERNOX: metze | 2005-09-19 16:38:15 +0200
move to struct winsdb_addr, (I'll add expiry_time and the wins_owner later tridge: can you please review the new winsdb_addr_* functions carefull, look for off-by-one bugs, etc. metze (This used to be commit 72eba90465c478ac9d363ed0c88efea27afd158e)
Diffstat (limited to 'source4/nbt_server/wins/winswack.c')
-rw-r--r--source4/nbt_server/wins/winswack.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/source4/nbt_server/wins/winswack.c b/source4/nbt_server/wins/winswack.c
index c9f102fdc8..461acad981 100644
--- a/source4/nbt_server/wins/winswack.c
+++ b/source4/nbt_server/wins/winswack.c
@@ -69,7 +69,7 @@ static void wins_wack_allow(struct wack_state *state)
nbtd_name_registration_reply(state->nbtsock, state->request_packet,
&state->src, NBT_RCODE_OK);
- rec->addresses = str_list_add(rec->addresses, state->reg_address);
+ rec->addresses = winsdb_addr_list_add(rec->addresses, state->reg_address);
if (rec->addresses == NULL) goto failed;
ttl = wins_server_ttl(state->winssrv, state->request_packet->additional[0].ttl);
@@ -133,11 +133,9 @@ static void wins_wack_handler(struct nbt_name_request *req)
/* we are going to allow the registration, but first remove any addresses
from the record that aren't in the reply from the client */
- for (i=0;rec->addresses[i];) {
- if (!str_list_check(state->query.out.reply_addrs, rec->addresses[i])) {
- str_list_remove(rec->addresses, rec->addresses[i]);
- } else {
- i++;
+ for (i=0; state->query.out.reply_addrs[i]; i++) {
+ if (!winsdb_addr_list_check(rec->addresses, state->query.out.reply_addrs[i])) {
+ winsdb_addr_list_remove(rec->addresses, state->query.out.reply_addrs[i]);
}
}
@@ -174,7 +172,8 @@ void wins_register_wack(struct nbt_name_socket *nbtsock,
state->nbtsock = nbtsock;
state->request_packet = talloc_steal(state, packet);
state->rec = talloc_steal(state, rec);
- state->owner_addresses = rec->addresses;
+ state->owner_addresses = winsdb_addr_string_list(state, rec->addresses);
+ if (state->owner_addresses == NULL) goto failed;
state->reg_address = packet->additional[0].rdata.netbios.addresses[0].ipaddr;
state->src.port = src->port;
state->src.addr = talloc_strdup(state, src->addr);
@@ -196,7 +195,7 @@ void wins_register_wack(struct nbt_name_socket *nbtsock,
/* send a WACK to the client, specifying the maximum time it could
take to check with the owner, plus some slack */
- ttl = 5 + 4 * str_list_length(rec->addresses);
+ ttl = 5 + 4 * winsdb_addr_list_length(rec->addresses);
nbtd_wack_reply(nbtsock, packet, src, ttl);
req = nbt_name_query_send(nbtsock, &state->query);