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;
- const char *our_ip = call->wreplconn->our_ip;
repl_out->command = WREPL_REPL_TABLE_REPLY;
return wreplsrv_fill_wrepl_table(service, call, table_out,
- our_ip, True);
+ service->wins_db->local_owner, True);
}
static int wreplsrv_in_sort_wins_name(struct wrepl_wins_name *n1,
}
static NTSTATUS wreplsrv_record2wins_name(TALLOC_CTX *mem_ctx,
- const char *our_address,
struct wrepl_wins_name *name,
struct winsdb_record *rec)
{
status = winsdb_record(service->wins_db, res->msgs[i], call, &rec);
NT_STATUS_NOT_OK_RETURN(status);
- status = wreplsrv_record2wins_name(names, call->wreplconn->our_ip, &names[i], rec);
+ status = wreplsrv_record2wins_name(names, &names[i], rec);
NT_STATUS_NOT_OK_RETURN(status);
talloc_free(rec);
talloc_free(res->msgs[i]);
wreplconn->conn = conn;
wreplconn->service = service;
- wreplconn->our_ip = socket_get_my_addr(conn->socket, wreplconn);
- if (!wreplconn->our_ip) {
- wreplsrv_terminate_in_connection(wreplconn, "wreplsrv_accept: out of memory");
- return;
- }
peer_ip = socket_get_peer_addr(conn->socket, wreplconn);
if (!peer_ip) {
wrepl_in->service = service;
wrepl_in->partner = partner;
- wrepl_in->our_ip = socket_get_my_addr(sock, wrepl_in);
- NT_STATUS_HAVE_NO_MEMORY(wrepl_in->our_ip);
status = stream_new_connection_merge(service->task->event_ctx, model_ops,
sock, &wreplsrv_stream_ops, service->task->msg_ctx,
#include "smbd/service_stream.h"
#include "librpc/gen_ndr/ndr_winsrepl.h"
#include "wrepl_server/wrepl_server.h"
+#include "nbt_server/wins/winsdb.h"
#include "libcli/composite/composite.h"
#include "libcli/wrepl/winsrepl.h"
struct socket_context *sock;
struct packet_context *packet;
uint16_t fde_flags;
- const char *our_ip;
/* prepare the outgoing request */
req->opcode = WREPL_OPCODE_BITS;
repl_out->command = state->command;
- our_ip = socket_get_my_addr(state->wreplconn->sock->sock, state);
- NT_STATUS_HAVE_NO_MEMORY(our_ip);
-
status = wreplsrv_fill_wrepl_table(service, state, table_out,
- our_ip, state->full_table);
+ service->wins_db->local_owner, state->full_table);
NT_STATUS_NOT_OK_RETURN(status);
/* queue the request */
struct wrepl_replication *repl_out = &state->req_packet.message.replication;
struct wrepl_table *table_out = &state->req_packet.message.replication.info.table;
NTSTATUS status;
- const char *our_ip;
req->opcode = WREPL_OPCODE_BITS;
req->assoc_ctx = state->wreplconn->assoc_ctx.peer_ctx;
repl_out->command = state->command;
- our_ip = socket_get_my_addr(state->wreplconn->sock->sock, state);
- NT_STATUS_HAVE_NO_MEMORY(our_ip);
-
status = wreplsrv_fill_wrepl_table(service, state, table_out,
- our_ip, state->full_table);
+ service->wins_db->local_owner, state->full_table);
NT_STATUS_NOT_OK_RETURN(status);
/* we won't get a reply to a inform message */
*/
struct wreplsrv_partner *partner;
- /*
- * we need to take care of our own ip address,
- * as this is the WINS-Owner ID the peer expect
- * from us.
- */
- const char *our_ip;
-
/* keep track of the assoc_ctx's */
struct {
BOOL stopped;