summaryrefslogtreecommitdiff
path: root/source3/include/messages.h
blob: 6e4cf130986570997c0edcba000c1e8b4d23ae4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* 
   Unix SMB/CIFS implementation.
   messages.c header
   Copyright (C) Andrew Tridgell 2000
   Copyright (C) 2001, 2002 by Martin Pool
   
   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.
*/

#ifndef _MESSAGES_H_
#define _MESSAGES_H_

/* general messages */
#define MSG_DEBUG		1
#define MSG_PING		2
#define MSG_PONG		3
#define MSG_PROFILE		4
#define MSG_REQ_DEBUGLEVEL	5
#define MSG_DEBUGLEVEL		6
#define MSG_REQ_PROFILELEVEL	7
#define MSG_PROFILELEVEL	8
#define MSG_REQ_POOL_USAGE	9
#define MSG_POOL_USAGE		10

/* If dmalloc is included, set a steady-state mark */
#define MSG_REQ_DMALLOC_MARK	11

/* If dmalloc is included, dump to the dmalloc log a description of
 * what has changed since the last MARK */
#define MSG_REQ_DMALLOC_LOG_CHANGED	12

#define MSG_SHUTDOWN		13

/* nmbd messages */
#define MSG_FORCE_ELECTION 1001
#define MSG_WINS_NEW_ENTRY 1002
#define MSG_SEND_PACKET    1003

/* printing messages */
/* #define MSG_PRINTER_NOTIFY  2001*/ /* Obsolete */
#define MSG_PRINTER_NOTIFY2		2002

#define MSG_PRINTER_DRVUPGRADE		2101
#define MSG_PRINTERDATA_INIT_RESET	2102
#define MSG_PRINTER_UPDATE		2103
#define MSG_PRINTER_MOD			2104

/* smbd messages */
#define MSG_SMB_CONF_UPDATED 3001
#define MSG_SMB_FORCE_TDIS   3002
#define MSG_SMB_SAM_SYNC     3003
#define MSG_SMB_SAM_REPL     3004
#define MSG_SMB_UNLOCK       3005
#define MSG_SMB_BREAK_REQUEST 3006
#define MSG_SMB_BREAK_RESPONSE 3007
#define MSG_SMB_ASYNC_LEVEL2_BREAK 3008
#define MSG_SMB_OPEN_RETRY   3009
#define MSG_SMB_KERNEL_BREAK 3010
#define MSG_SMB_FILE_RENAME  3011
#define MSG_SMB_INJECT_FAULT 3012
#define MSG_SMB_BLOCKING_LOCK_CANCEL 3013
#define MSG_SMB_NOTIFY       3014
#define MSG_SMB_STAT_CACHE_DELETE 3015
/*
 * Samba4 compatibility
 */
#define MSG_PVFS_NOTIFY       3016

/* winbind messages */
#define MSG_WINBIND_FINISHED     4001
#define MSG_WINBIND_FORGET_STATE 4002
#define MSG_WINBIND_ONLINE       4003
#define MSG_WINBIND_OFFLINE      4004
#define MSG_WINBIND_ONLINESTATUS 4005
#define MSG_WINBIND_TRY_TO_GO_ONLINE 4006
#define MSG_WINBIND_FAILED_TO_GO_ONLINE 4007

/* Flags to classify messages - used in message_send_all() */
/* Sender will filter by flag. */

#define FLAG_MSG_GENERAL 	0x0001
#define FLAG_MSG_SMBD		0x0002
#define FLAG_MSG_NMBD		0x0004
#define FLAG_MSG_PRINT_NOTIFY	0x0008
#define FLAG_MSG_PRINT_GENERAL	0x0010

struct server_id {
	pid_t pid;
};

struct messaging_context;
struct data_blob;

unsigned int messages_pending_for_pid(struct messaging_context *msg_ctx,
				      struct server_id pid);
void message_dispatch(struct messaging_context *msg_ctx);
BOOL message_send_all(struct messaging_context *msg_ctx,
		      int msg_type,
		      const void *buf, size_t len,
		      int *n_sent);
void message_block(void);
void message_unblock(void);
struct event_context *messaging_event_context(struct messaging_context *msg_ctx);
struct messaging_context *messaging_init(TALLOC_CTX *mem_ctx, 
					 struct server_id server_id, 
					 struct event_context *ev);
NTSTATUS messaging_register(struct messaging_context *msg_ctx,
			    void *private_data,
			    uint32_t msg_type,
			    void (*fn)(struct messaging_context *msg,
				       void *private_data, 
				       uint32_t msg_type, 
				       struct server_id server_id,
				       struct data_blob *data));
void messaging_deregister(struct messaging_context *ctx, uint32_t msg_type,
			  void *private_data);
NTSTATUS messaging_send(struct messaging_context *msg_ctx,
			struct server_id server, 
			uint32_t msg_type, const struct data_blob *data);
NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
			    struct server_id server, uint32_t msg_type,
			    const uint8 *buf, size_t len);

#endif