Fix string overflow due to wrong size calculation
[Samba/gebeck_regimport.git] / source3 / wrepld / wins_repl.h
blob25b44422121e9791d75101265ff434e591928eb9
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.
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.
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.
21 #define OPCODE_NON_NBT 0x00007800
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
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
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
44 typedef 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;
53 typedef 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;
67 typedef struct _WINS_PARTNERS
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;
77 typedef struct _generic_header{
78 int data_size;
79 int opcode;
80 int assoc_ctx;
81 int mess_type;
82 } generic_header;
84 typedef struct _START_ASSOC_REQUEST {
85 int assoc_ctx;
86 int min_ver;
87 int maj_ver;
88 } START_ASSOC_REQUEST;
90 typedef struct _START_ASSOC_REPLY {
91 int assoc_ctx;
92 int min_ver;
93 int maj_ver;
94 } START_ASSOC_REPLY;
96 typedef struct _STOP_ASSOC {
97 int reason;
98 } STOP_ASSOC;
100 typedef struct _AVMT_REP {
101 int partner_count;
102 WINS_OWNER *wins_owner;
103 struct in_addr initiating_wins_server;
104 } AVMT_REP;
106 typedef struct _SEND_ENTRIES_REQUEST {
107 WINS_OWNER wins_owner;
108 } SEND_ENTRIES_REQUEST;
110 typedef struct _SEND_ENTRIES_REPLY {
111 int max_names;
112 WINS_NAME *wins_name;
113 } SEND_ENTRIES_REPLY;
115 typedef struct _UPDATE_NOTIFY_REQUEST {
116 int partner_count;
117 WINS_OWNER *wins_owner;
118 struct in_addr initiating_wins_server;
119 } UPDATE_NOTIFY_REQUEST;
121 typedef struct _REPLICATE {
122 int msg_type;
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;
131 typedef struct _GENERIC_PACKET {
132 int fd;
134 generic_header header;
136 START_ASSOC_REQUEST sa_rq;
137 START_ASSOC_REPLY sa_rp;
138 STOP_ASSOC so;
139 REPLICATE rep;
140 } GENERIC_PACKET;
142 struct wins_packet_struct
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;
152 struct BUFFER {
153 char *buffer;
154 int offset;
155 int length;
160 #include "wrepld_proto.h"