1/* 2 * Unix SMB/CIFS implementation. 3 * RPC Pipe client / server routines 4 * Copyright (C) Jean Fran�ois Micouleau 1998-2002. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 */ 20 21#define OPCODE_NON_NBT 0x00007800 22 23/* the messages */ 24#define MESSAGE_TYPE_START_ASSOC_REQUEST 0 25#define MESSAGE_TYPE_START_ASSOC_REPLY 1 26#define MESSAGE_TYPE_STOP_ASSOC 2 27#define MESSAGE_TYPE_REPLICATE 3 28 29/* the replication sub-message */ 30#define MESSAGE_REP_ADD_VERSION_REQUEST 0 31#define MESSAGE_REP_ADD_VERSION_REPLY 1 32#define MESSAGE_REP_SEND_ENTRIES_REQUEST 2 33#define MESSAGE_REP_SEND_ENTRIES_REPLY 3 34#define MESSAGE_REP_UPDATE_NOTIFY_REQUEST 4 35 36/* stop reasons */ 37#define STOP_REASON_USER_REASON 0 38#define STOP_REASON_AUTH_FAILED 1 39#define STOP_REASON_INCOMPLETE_VERSION 2 40#define STOP_REASON_BUG_CHECK 3 41#define STOP_REASON_MESSAGE_ERROR 4 42 43 44typedef struct _WINS_OWNER { 45 struct in_addr address; 46 SMB_BIG_UINT max_version; 47 SMB_BIG_UINT min_version; 48 int type; 49 time_t last_pull; 50 time_t last_push; 51} WINS_OWNER; 52 53typedef struct _WINS_NAME { 54 int name_len; /* always 0x11 */ 55 char name[16]; 56 char type; 57 int empty; 58 int name_flag; 59 int group_flag; 60 SMB_BIG_UINT id; 61 int num_ip; 62 struct in_addr owner; 63 struct in_addr *others; 64 int foo; /* 0xffffff */ 65} WINS_NAME; 66 67typedef struct _WINS_PARTNERS 68{ 69 int client_assoc; 70 int server_assoc; 71 BOOL pull_partner; 72 BOOL push_partner; 73 struct in_addr partner_server; 74 struct in_addr other_server; 75} WINS_PARTNER; 76 77typedef struct _generic_header{ 78 int data_size; 79 int opcode; 80 int assoc_ctx; 81 int mess_type; 82} generic_header; 83 84typedef struct _START_ASSOC_REQUEST { 85 int assoc_ctx; 86 int min_ver; 87 int maj_ver; 88} START_ASSOC_REQUEST; 89 90typedef struct _START_ASSOC_REPLY { 91 int assoc_ctx; 92 int min_ver; 93 int maj_ver; 94} START_ASSOC_REPLY; 95 96typedef struct _STOP_ASSOC { 97 int reason; 98} STOP_ASSOC; 99 100typedef struct _AVMT_REP { 101 int partner_count; 102 WINS_OWNER *wins_owner; 103 struct in_addr initiating_wins_server; 104} AVMT_REP; 105 106typedef struct _SEND_ENTRIES_REQUEST { 107 WINS_OWNER wins_owner; 108} SEND_ENTRIES_REQUEST; 109 110typedef struct _SEND_ENTRIES_REPLY { 111 int max_names; 112 WINS_NAME *wins_name; 113} SEND_ENTRIES_REPLY; 114 115typedef struct _UPDATE_NOTIFY_REQUEST { 116 int partner_count; 117 WINS_OWNER *wins_owner; 118 struct in_addr initiating_wins_server; 119} UPDATE_NOTIFY_REQUEST; 120 121typedef struct _REPLICATE { 122 int msg_type; 123 124 AVMT_REP avmt_rep; 125 SEND_ENTRIES_REQUEST se_rq; 126 SEND_ENTRIES_REPLY se_rp; 127 UPDATE_NOTIFY_REQUEST un_rq; 128} REPLICATE; 129 130 131typedef struct _GENERIC_PACKET { 132 int fd; 133 134 generic_header header; 135 136 START_ASSOC_REQUEST sa_rq; 137 START_ASSOC_REPLY sa_rp; 138 STOP_ASSOC so; 139 REPLICATE rep; 140} GENERIC_PACKET; 141 142struct wins_packet_struct 143{ 144 struct wins_packet_struct *next; 145 struct wins_packet_struct *prev; 146 BOOL stop_packet; 147 int fd; 148 time_t timestamp; 149 GENERIC_PACKET *packet; 150}; 151 152struct BUFFER { 153 char *buffer; 154 int offset; 155 int length; 156}; 157 158 159 160#include "wrepld_proto.h" 161 162