From 2452515a1603dbcea03d6cbb805413c5ccb15ac7 Mon Sep 17 00:00:00 2001 From: Jean-François Micouleau Date: Fri, 25 Jan 2002 22:53:49 +0000 Subject: that's the wins replication daemon ! there are still some work to do on it but it's already functionnal. J.F. (This used to be commit 2506c98d19263bd5f367a488c2238dcdfec46ee9) --- source3/wrepld/wins_repl.h | 162 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 source3/wrepld/wins_repl.h (limited to 'source3/wrepld/wins_repl.h') diff --git a/source3/wrepld/wins_repl.h b/source3/wrepld/wins_repl.h new file mode 100644 index 0000000000..c3637c7e57 --- /dev/null +++ b/source3/wrepld/wins_repl.h @@ -0,0 +1,162 @@ +/* + * Unix SMB/Netbios implementation. + * Version 1.9. + * RPC Pipe client / server routines + * Copyright (C) Jean François Micouleau 1998-2002. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define OPCODE_NON_NBT 0x00007800 + +/* the messages */ +#define MESSAGE_TYPE_START_ASSOC_REQUEST 0 +#define MESSAGE_TYPE_START_ASSOC_REPLY 1 +#define MESSAGE_TYPE_STOP_ASSOC 2 +#define MESSAGE_TYPE_REPLICATE 3 + +/* the replication sub-message */ +#define MESSAGE_REP_ADD_VERSION_REQUEST 0 +#define MESSAGE_REP_ADD_VERSION_REPLY 1 +#define MESSAGE_REP_SEND_ENTRIES_REQUEST 2 +#define MESSAGE_REP_SEND_ENTRIES_REPLY 3 +#define MESSAGE_REP_UPDATE_NOTIFY_REQUEST 4 + +/* stop reasons */ +#define STOP_REASON_USER_REASON 0 +#define STOP_REASON_AUTH_FAILED 1 +#define STOP_REASON_INCOMPLETE_VERSION 2 +#define STOP_REASON_BUG_CHECK 3 +#define STOP_REASON_MESSAGE_ERROR 4 + + +typedef struct _WINS_OWNER { + struct in_addr address; + SMB_BIG_UINT max_version; + SMB_BIG_UINT min_version; + int type; + time_t last_pull; + time_t last_push; +} WINS_OWNER; + +typedef struct _WINS_NAME { + int name_len; /* always 0x11 */ + char name[16]; + char type; + int empty; + int name_flag; + int group_flag; + SMB_BIG_UINT id; + int num_ip; + struct in_addr owner; + struct in_addr *others; + int foo; /* 0xffffff */ +} WINS_NAME; + +typedef struct _WINS_PARTNERS +{ + int client_assoc; + int server_assoc; + BOOL pull_partner; + BOOL push_partner; + struct in_addr partner_server; + struct in_addr other_server; +} WINS_PARTNER; + +typedef struct _generic_header{ + int data_size; + int opcode; + int assoc_ctx; + int mess_type; +} generic_header; + +typedef struct _START_ASSOC_REQUEST { + int assoc_ctx; + int min_ver; + int maj_ver; +} START_ASSOC_REQUEST; + +typedef struct _START_ASSOC_REPLY { + int assoc_ctx; + int min_ver; + int maj_ver; +} START_ASSOC_REPLY; + +typedef struct _STOP_ASSOC { + int reason; +} STOP_ASSOC; + +typedef struct _AVMT_REP { + int partner_count; + WINS_OWNER *wins_owner; + struct in_addr initiating_wins_server; +} AVMT_REP; + +typedef struct _SEND_ENTRIES_REQUEST { + WINS_OWNER wins_owner; +} SEND_ENTRIES_REQUEST; + +typedef struct _SEND_ENTRIES_REPLY { + int max_names; + WINS_NAME *wins_name; +} SEND_ENTRIES_REPLY; + +typedef struct _UPDATE_NOTIFY_REQUEST { + int partner_count; + WINS_OWNER *wins_owner; + struct in_addr initiating_wins_server; +} UPDATE_NOTIFY_REQUEST; + +typedef struct _REPLICATE { + int msg_type; + + AVMT_REP avmt_rep; + SEND_ENTRIES_REQUEST se_rq; + SEND_ENTRIES_REPLY se_rp; + UPDATE_NOTIFY_REQUEST un_rq; +} REPLICATE; + + +typedef struct _GENERIC_PACKET { + int fd; + + generic_header header; + + START_ASSOC_REQUEST sa_rq; + START_ASSOC_REPLY sa_rp; + STOP_ASSOC so; + REPLICATE rep; +} GENERIC_PACKET; + +struct wins_packet_struct +{ + struct wins_packet_struct *next; + struct wins_packet_struct *prev; + BOOL stop_packet; + int fd; + time_t timestamp; + GENERIC_PACKET *packet; +}; + +struct BUFFER { + char *buffer; + int offset; + int length; +}; + + + +#include "wrepld_proto.h" + -- cgit