0001-01-01 02:30:17 +02:30
/*
0001-01-01 02:30:17 +02:30
* Unix SMB / CIFS implementation .
0001-01-01 02:30:17 +02:30
* RPC Pipe client / server routines
* Copyright ( C ) Jean Fran <EFBFBD> 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 0213 9 , 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"