Author: metze Date: 2005-10-14 12:57:00 +0000 (Fri, 14 Oct 2005) New Revision: 11044
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11044 Log: Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/include/structs.h branches/SAMBA_4_0/source/libcli/dgram/libdgram.h branches/SAMBA_4_0/source/libcli/dgram/ntlogon.c branches/SAMBA_4_0/source/libcli/nbt/namerefresh.c branches/SAMBA_4_0/source/libcli/nbt/nameregister.c branches/SAMBA_4_0/source/main.mk branches/SAMBA_4_0/source/nbt_server/dgram/netlogon.c branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c branches/SAMBA_4_0/source/torture/nbt/dgram.c Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: svk:merge - 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/tmp/samba4-winsrepl:10362 3a72dc49-98ff-0310-ab52-9b7ed7945d91:/local/samba4:9495 a953eb74-4aff-0310-a63c-855d20285ebb:/local/samba4:11632 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5616 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5609 + 0c0555d6-39d7-0310-84fc-f1cc0bd64818:/branches/tmp/samba4-winsrepl:10417 3a72dc49-98ff-0310-ab52-9b7ed7945d91:/local/samba4:9495 a953eb74-4aff-0310-a63c-855d20285ebb:/local/samba4:11632 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/SAMBA_4_0:5616 d349723c-e9fc-0310-b8a8-fdedf1c27407:/local/samba-SAMBA_4_0:5609 Modified: branches/SAMBA_4_0/source/include/structs.h =================================================================== Modified: branches/SAMBA_4_0/source/libcli/dgram/libdgram.h =================================================================== Modified: branches/SAMBA_4_0/source/libcli/dgram/ntlogon.c =================================================================== Modified: branches/SAMBA_4_0/source/libcli/nbt/namerefresh.c =================================================================== Modified: branches/SAMBA_4_0/source/libcli/nbt/nameregister.c =================================================================== Modified: branches/SAMBA_4_0/source/main.mk =================================================================== Modified: branches/SAMBA_4_0/source/nbt_server/dgram/netlogon.c =================================================================== Modified: branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c =================================================================== --- branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c 2005-10-14 12:56:42 UTC (rev 11043) +++ branches/SAMBA_4_0/source/nbt_server/wins/winsdb.c 2005-10-14 12:57:00 UTC (rev 11044) @@ -561,6 +561,58 @@ return status; } + rec = talloc(mem_ctx, struct winsdb_record); + if (rec == NULL) { + status = NT_STATUS_NO_MEMORY; + goto failed; + } + + if (!name) { + status = winsdb_nbt_name(rec, msg->dn, &name); + if (!NT_STATUS_IS_OK(status)) goto failed; + } + + /* parse it into a more convenient winsdb_record structure */ + rec->name = name; + rec->state = ldb_msg_find_int(msg, "state", WINS_REC_RELEASED); + rec->nb_flags = ldb_msg_find_int(msg, "nbFlags", 0); + rec->wins_owner = ldb_msg_find_string(msg, "winsOwner", NULL); + rec->expire_time = ldap_string_to_time(ldb_msg_find_string(msg, "expireTime", NULL)); + rec->registered_by = ldb_msg_find_string(msg, "registeredBy", NULL); + rec->version = ldb_msg_find_uint64(msg, "versionID", 0); + talloc_steal(rec, rec->wins_owner); + talloc_steal(rec, rec->registered_by); + + if (!rec->wins_owner) rec->wins_owner = WINSDB_OWNER_LOCAL; + + el = ldb_msg_find_element(msg, "address"); + if (el == NULL) { + status = NT_STATUS_INTERNAL_DB_CORRUPTION; + goto failed; + } + + rec->addresses = talloc_array(rec, struct winsdb_addr *, el->num_values+1); + if (rec->addresses == NULL) { + status = NT_STATUS_NO_MEMORY; + goto failed; + } + + for (i=0;i<el->num_values;i++) { + status = winsdb_addr_decode(rec, &el->values[i], rec->addresses, &rec->addresses[i]); + if (!NT_STATUS_IS_OK(status)) goto failed; + } + rec->addresses[i] = NULL; + + *_rec = rec; + return NT_STATUS_OK; +failed: + if (NT_STATUS_EQUAL(NT_STATUS_INTERNAL_DB_CORRUPTION, status)) { + DEBUG(1,("winsdb_record: corrupted record: %s\n", ldb_dn_linearize(rec, msg->dn))); + } + talloc_free(rec); + return status; +} + /* form a ldb_message from a winsdb_record */ Modified: branches/SAMBA_4_0/source/torture/nbt/dgram.c ===================================================================