svn commit: samba r10770 - in
branches/tmp/samba4-winsrepl/source/wrepl_server: .
metze at samba.org
metze at samba.org
Thu Oct 6 14:56:02 GMT 2005
Author: metze
Date: 2005-10-06 14:56:01 +0000 (Thu, 06 Oct 2005)
New Revision: 10770
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10770
Log:
- move the table filling to a seperate function, will be reused later
- fix the build, wrepl_nbt_name fixes
- remove state -> update_state
metze
Modified:
branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_in_call.c
branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_server.c
Changeset:
Modified: branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_in_call.c
===================================================================
--- branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_in_call.c 2005-10-06 14:45:06 UTC (rev 10769)
+++ branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_in_call.c 2005-10-06 14:56:01 UTC (rev 10770)
@@ -114,42 +114,12 @@
struct wreplsrv_service *service = call->wreplconn->service;
struct wrepl_replication *repl_out = &call->rep_packet.message.replication;
struct wrepl_table *table_out = &call->rep_packet.message.replication.info.table;
- struct wreplsrv_owner *cur;
- uint64_t local_max_version;
- uint32_t i = 0;
+ const char *our_ip = call->wreplconn->our_ip;
repl_out->command = WREPL_REPL_TABLE_REPLY;
- table_out->partner_count = 0;
- table_out->partners = NULL;
- table_out->initiator = WINSDB_OWNER_LOCAL;
-
- local_max_version = wreplsrv_local_max_version(service);
- if (local_max_version > 0) {
- table_out->partner_count++;
- }
-
- for (cur = service->table; cur; cur = cur->next) {
- table_out->partner_count++;
- }
-
- table_out->partners = talloc_array(call, struct wrepl_wins_owner, table_out->partner_count);
- NT_STATUS_HAVE_NO_MEMORY(table_out->partners);
-
- if (local_max_version > 0) {
- table_out->partners[i].address = call->wreplconn->our_ip;
- table_out->partners[i].min_version = 0;
- table_out->partners[i].max_version = local_max_version;
- table_out->partners[i].type = 1;
- i++;
- }
-
- for (cur = service->table; cur; cur = cur->next) {
- table_out->partners[i] = cur->owner;
- i++;
- }
-
- return NT_STATUS_OK;
+ return wreplsrv_fill_wrepl_table(service, call, table_out,
+ our_ip, our_ip, True);
}
static int wreplsrv_in_sort_wins_name(struct wrepl_wins_name *n1,
@@ -168,9 +138,8 @@
uint32_t num_ips, i;
struct wrepl_ip *ips;
- name->name = *rec->name;
- talloc_steal(mem_ctx, rec->name->name);
- talloc_steal(mem_ctx, rec->name->scope);
+ name->name = rec->name;
+ talloc_steal(mem_ctx, rec->name);
name->id = rec->version;
name->unknown = WINSDB_GROUP_ADDRESS;
@@ -317,15 +286,15 @@
static void wreplsrv_in_update_handler(struct composite_context *creq)
{
- struct wreplsrv_in_update_state *state= talloc_get_type(creq->async.private_data,
- struct wreplsrv_in_update_state);
+ struct wreplsrv_in_update_state *update_state = talloc_get_type(creq->async.private_data,
+ struct wreplsrv_in_update_state);
NTSTATUS status;
status = wreplsrv_pull_cycle_recv(creq);
- talloc_free(state->wrepl_out);
+ talloc_free(update_state->wrepl_out);
- wreplsrv_terminate_in_connection(state->wrepl_in, nt_errstr(status));
+ wreplsrv_terminate_in_connection(update_state->wrepl_in, nt_errstr(status));
}
static NTSTATUS wreplsrv_in_update(struct wreplsrv_in_call *call)
Modified: branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_server.c
===================================================================
--- branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_server.c 2005-10-06 14:45:06 UTC (rev 10769)
+++ branches/tmp/samba4-winsrepl/source/wrepl_server/wrepl_server.c 2005-10-06 14:56:01 UTC (rev 10770)
@@ -160,6 +160,49 @@
return maxVersion;
}
+NTSTATUS wreplsrv_fill_wrepl_table(struct wreplsrv_service *service,
+ TALLOC_CTX *mem_ctx,
+ struct wrepl_table *table_out,
+ const char *our_ip,
+ const char *initiator,
+ BOOL full_table)
+{
+ struct wreplsrv_owner *cur;
+ uint64_t local_max_version;
+ uint32_t i = 0;
+
+ table_out->partner_count = 0;
+ table_out->partners = NULL;
+ table_out->initiator = initiator;
+
+ local_max_version = wreplsrv_local_max_version(service);
+ if (local_max_version > 0) {
+ table_out->partner_count++;
+ }
+
+ for (cur = service->table; full_table && cur; cur = cur->next) {
+ table_out->partner_count++;
+ }
+
+ table_out->partners = talloc_array(mem_ctx, struct wrepl_wins_owner, table_out->partner_count);
+ NT_STATUS_HAVE_NO_MEMORY(table_out->partners);
+
+ if (local_max_version > 0) {
+ table_out->partners[i].address = our_ip;
+ table_out->partners[i].min_version = 0;
+ table_out->partners[i].max_version = local_max_version;
+ table_out->partners[i].type = 1;
+ i++;
+ }
+
+ for (cur = service->table; full_table && cur; cur = cur->next) {
+ table_out->partners[i] = cur->owner;
+ i++;
+ }
+
+ return NT_STATUS_OK;
+}
+
struct wreplsrv_owner *wreplsrv_find_owner(struct wreplsrv_owner *table, const char *wins_owner)
{
struct wreplsrv_owner *cur;
More information about the samba-cvs
mailing list