mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
r21064: The core of this patch is
void message_register(int msg_type, void (*fn)(int msg_type, struct process_id pid, - void *buf, size_t len)) + void *buf, size_t len, + void *private_data), + void *private_data) { struct dispatch_fns *dfn; So this adds a (so far unused) private pointer that is passed from message_register to the message handler. A prerequisite to implement a tiny samba4-API compatible wrapper around our messaging system. That itself is necessary for the Samba4 notify system. Yes, I know, I could import the whole Samba4 messaging system, but I want to do it step by step and I think getting notify in is more important in this step. Volker
This commit is contained in:
parent
7e17e54cb7
commit
c8ae60ed65
@ -472,7 +472,7 @@ BOOL debug_parse_levels(const char *params_str)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void debug_message(int msg_type, struct process_id src,
|
static void debug_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
const char *params_str = (const char *)buf;
|
const char *params_str = (const char *)buf;
|
||||||
|
|
||||||
@ -509,7 +509,7 @@ void debug_message_send(pid_t pid, const char *params_str)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void debuglevel_message(int msg_type, struct process_id src,
|
static void debuglevel_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
char *message = debug_list_class_names_and_levels();
|
char *message = debug_list_class_names_and_levels();
|
||||||
|
|
||||||
@ -539,8 +539,8 @@ void debug_init(void)
|
|||||||
|
|
||||||
initialised = True;
|
initialised = True;
|
||||||
|
|
||||||
message_register(MSG_DEBUG, debug_message);
|
message_register(MSG_DEBUG, debug_message, NULL);
|
||||||
message_register(MSG_REQ_DEBUGLEVEL, debuglevel_message);
|
message_register(MSG_REQ_DEBUGLEVEL, debuglevel_message, NULL);
|
||||||
|
|
||||||
for(p = default_classname_table; *p; p++) {
|
for(p = default_classname_table; *p; p++) {
|
||||||
debug_add_class(*p);
|
debug_add_class(*p);
|
||||||
|
@ -35,8 +35,10 @@ static unsigned long our_dm_mark = 0;
|
|||||||
* Respond to a POOL_USAGE message by sending back string form of memory
|
* Respond to a POOL_USAGE message by sending back string form of memory
|
||||||
* usage stats.
|
* usage stats.
|
||||||
**/
|
**/
|
||||||
static void msg_req_dmalloc_mark(int UNUSED(msg_type), struct process_id UNUSED(src_pid),
|
static void msg_req_dmalloc_mark(int UNUSED(msg_type),
|
||||||
void *UNUSED(buf), size_t UNUSED(len))
|
struct process_id UNUSED(src_pid),
|
||||||
|
void *UNUSED(buf), size_t UNUSED(len),
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_DMALLOC
|
#ifdef ENABLE_DMALLOC
|
||||||
our_dm_mark = dmalloc_mark();
|
our_dm_mark = dmalloc_mark();
|
||||||
@ -50,7 +52,8 @@ static void msg_req_dmalloc_mark(int UNUSED(msg_type), struct process_id UNUSED(
|
|||||||
|
|
||||||
static void msg_req_dmalloc_log_changed(int UNUSED(msg_type),
|
static void msg_req_dmalloc_log_changed(int UNUSED(msg_type),
|
||||||
struct process_id UNUSED(src_pid),
|
struct process_id UNUSED(src_pid),
|
||||||
void *UNUSED(buf), size_t UNUSED(len))
|
void *UNUSED(buf), size_t UNUSED(len),
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_DMALLOC
|
#ifdef ENABLE_DMALLOC
|
||||||
dmalloc_log_changed(our_dm_mark, True, True, True);
|
dmalloc_log_changed(our_dm_mark, True, True, True);
|
||||||
@ -66,7 +69,8 @@ static void msg_req_dmalloc_log_changed(int UNUSED(msg_type),
|
|||||||
**/
|
**/
|
||||||
void register_dmalloc_msgs(void)
|
void register_dmalloc_msgs(void)
|
||||||
{
|
{
|
||||||
message_register(MSG_REQ_DMALLOC_MARK, msg_req_dmalloc_mark);
|
message_register(MSG_REQ_DMALLOC_MARK, msg_req_dmalloc_mark, NULL);
|
||||||
message_register(MSG_REQ_DMALLOC_LOG_CHANGED, msg_req_dmalloc_log_changed);
|
message_register(MSG_REQ_DMALLOC_LOG_CHANGED,
|
||||||
|
msg_req_dmalloc_log_changed, NULL);
|
||||||
DEBUG(2, ("Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED\n"));
|
DEBUG(2, ("Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED\n"));
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,9 @@ struct message_rec {
|
|||||||
static struct dispatch_fns {
|
static struct dispatch_fns {
|
||||||
struct dispatch_fns *next, *prev;
|
struct dispatch_fns *next, *prev;
|
||||||
int msg_type;
|
int msg_type;
|
||||||
void (*fn)(int msg_type, struct process_id pid, void *buf, size_t len);
|
void (*fn)(int msg_type, struct process_id pid, void *buf, size_t len,
|
||||||
|
void *private_data);
|
||||||
|
void *private_data;
|
||||||
} *dispatch_fns;
|
} *dispatch_fns;
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -102,7 +104,7 @@ static void sig_usr1(void)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void ping_message(int msg_type, struct process_id src,
|
static void ping_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
const char *msg = buf ? (const char *)buf : "none";
|
const char *msg = buf ? (const char *)buf : "none";
|
||||||
|
|
||||||
@ -133,7 +135,7 @@ BOOL message_init(void)
|
|||||||
|
|
||||||
CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
|
CatchSignal(SIGUSR1, SIGNAL_CAST sig_usr1);
|
||||||
|
|
||||||
message_register(MSG_PING, ping_message);
|
message_register(MSG_PING, ping_message, NULL);
|
||||||
|
|
||||||
/* Register some debugging related messages */
|
/* Register some debugging related messages */
|
||||||
|
|
||||||
@ -493,7 +495,9 @@ void message_dispatch(void)
|
|||||||
for (dfn = dispatch_fns; dfn; dfn = dfn->next) {
|
for (dfn = dispatch_fns; dfn; dfn = dfn->next) {
|
||||||
if (dfn->msg_type == msg_type) {
|
if (dfn->msg_type == msg_type) {
|
||||||
DEBUG(10,("message_dispatch: processing message of type %d.\n", msg_type));
|
DEBUG(10,("message_dispatch: processing message of type %d.\n", msg_type));
|
||||||
dfn->fn(msg_type, src, len ? (void *)buf : NULL, len);
|
dfn->fn(msg_type, src,
|
||||||
|
len ? (void *)buf : NULL, len,
|
||||||
|
dfn->private_data);
|
||||||
n_handled++;
|
n_handled++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -516,7 +520,9 @@ void message_dispatch(void)
|
|||||||
|
|
||||||
void message_register(int msg_type,
|
void message_register(int msg_type,
|
||||||
void (*fn)(int msg_type, struct process_id pid,
|
void (*fn)(int msg_type, struct process_id pid,
|
||||||
void *buf, size_t len))
|
void *buf, size_t len,
|
||||||
|
void *private_data),
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct dispatch_fns *dfn;
|
struct dispatch_fns *dfn;
|
||||||
|
|
||||||
@ -535,6 +541,7 @@ void message_register(int msg_type,
|
|||||||
|
|
||||||
dfn->msg_type = msg_type;
|
dfn->msg_type = msg_type;
|
||||||
dfn->fn = fn;
|
dfn->fn = fn;
|
||||||
|
dfn->private_data = private_data;
|
||||||
|
|
||||||
DLIST_ADD(dispatch_fns, dfn);
|
DLIST_ADD(dispatch_fns, dfn);
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,8 @@ static void msg_pool_usage_helper(const void *ptr, int depth, int max_depth, int
|
|||||||
* usage stats.
|
* usage stats.
|
||||||
**/
|
**/
|
||||||
void msg_pool_usage(int msg_type, struct process_id src_pid,
|
void msg_pool_usage(int msg_type, struct process_id src_pid,
|
||||||
void *UNUSED(buf), size_t UNUSED(len))
|
void *UNUSED(buf), size_t UNUSED(len),
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct msg_pool_usage_state state;
|
struct msg_pool_usage_state state;
|
||||||
|
|
||||||
@ -100,6 +101,6 @@ void msg_pool_usage(int msg_type, struct process_id src_pid,
|
|||||||
**/
|
**/
|
||||||
void register_msg_pool_usage(void)
|
void register_msg_pool_usage(void)
|
||||||
{
|
{
|
||||||
message_register(MSG_REQ_POOL_USAGE, msg_pool_usage);
|
message_register(MSG_REQ_POOL_USAGE, msg_pool_usage, NULL);
|
||||||
DEBUG(2, ("Registered MSG_REQ_POOL_USAGE\n"));
|
DEBUG(2, ("Registered MSG_REQ_POOL_USAGE\n"));
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ static void terminate(void)
|
|||||||
**************************************************************************** */
|
**************************************************************************** */
|
||||||
|
|
||||||
static void nmbd_terminate(int msg_type, struct process_id src,
|
static void nmbd_terminate(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
terminate();
|
terminate();
|
||||||
}
|
}
|
||||||
@ -272,7 +272,7 @@ static BOOL reload_nmbd_services(BOOL test)
|
|||||||
**************************************************************************** */
|
**************************************************************************** */
|
||||||
|
|
||||||
static void msg_reload_nmbd_services(int msg_type, struct process_id src,
|
static void msg_reload_nmbd_services(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
write_browse_list( 0, True );
|
write_browse_list( 0, True );
|
||||||
dump_all_namelists();
|
dump_all_namelists();
|
||||||
@ -289,7 +289,7 @@ static void msg_reload_nmbd_services(int msg_type, struct process_id src,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void msg_nmbd_send_packet(int msg_type, struct process_id src,
|
static void msg_nmbd_send_packet(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct packet_struct *p = (struct packet_struct *)buf;
|
struct packet_struct *p = (struct packet_struct *)buf;
|
||||||
struct subnet_record *subrec;
|
struct subnet_record *subrec;
|
||||||
@ -558,7 +558,7 @@ static void process(void)
|
|||||||
if(reload_after_sighup) {
|
if(reload_after_sighup) {
|
||||||
DEBUG( 0, ( "Got SIGHUP dumping debug info.\n" ) );
|
DEBUG( 0, ( "Got SIGHUP dumping debug info.\n" ) );
|
||||||
msg_reload_nmbd_services(MSG_SMB_CONF_UPDATED,
|
msg_reload_nmbd_services(MSG_SMB_CONF_UPDATED,
|
||||||
pid_to_procid(0), (void*) &no_subnets, 0);
|
pid_to_procid(0), (void*) &no_subnets, 0, NULL);
|
||||||
if(no_subnets)
|
if(no_subnets)
|
||||||
return;
|
return;
|
||||||
reload_after_sighup = 0;
|
reload_after_sighup = 0;
|
||||||
@ -745,14 +745,14 @@ static BOOL open_sockets(BOOL isdaemon, int port)
|
|||||||
|
|
||||||
pidfile_create("nmbd");
|
pidfile_create("nmbd");
|
||||||
message_init();
|
message_init();
|
||||||
message_register(MSG_FORCE_ELECTION, nmbd_message_election);
|
message_register(MSG_FORCE_ELECTION, nmbd_message_election, NULL);
|
||||||
#if 0
|
#if 0
|
||||||
/* Until winsrepl is done. */
|
/* Until winsrepl is done. */
|
||||||
message_register(MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry);
|
message_register(MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry, NULL);
|
||||||
#endif
|
#endif
|
||||||
message_register(MSG_SHUTDOWN, nmbd_terminate);
|
message_register(MSG_SHUTDOWN, nmbd_terminate, NULL);
|
||||||
message_register(MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services);
|
message_register(MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services, NULL);
|
||||||
message_register(MSG_SEND_PACKET, msg_nmbd_send_packet);
|
message_register(MSG_SEND_PACKET, msg_nmbd_send_packet, NULL);
|
||||||
|
|
||||||
TimeInit();
|
TimeInit();
|
||||||
|
|
||||||
|
@ -379,7 +379,7 @@ yet registered on subnet %s\n", nmb_namestr(&nmbname), subrec->subnet_name ));
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
void nmbd_message_election(int msg_type, struct process_id src,
|
void nmbd_message_election(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct subnet_record *subrec;
|
struct subnet_record *subrec;
|
||||||
|
|
||||||
|
@ -2371,7 +2371,7 @@ void wins_write_database(time_t t, BOOL background)
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
void nmbd_wins_new_entry(int msg_type, struct process_id src,
|
void nmbd_wins_new_entry(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
WINS_RECORD *record;
|
WINS_RECORD *record;
|
||||||
struct name_record *namerec = NULL;
|
struct name_record *namerec = NULL;
|
||||||
|
@ -174,7 +174,8 @@ static void sigchld_handler(int signum)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* React on 'smbcontrol winbindd reload-config' in the same way as on SIGHUP*/
|
/* React on 'smbcontrol winbindd reload-config' in the same way as on SIGHUP*/
|
||||||
static void msg_reload_services(int msg_type, struct process_id src, void *buf, size_t len)
|
static void msg_reload_services(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
/* Flush various caches */
|
/* Flush various caches */
|
||||||
flush_caches();
|
flush_caches();
|
||||||
@ -182,7 +183,8 @@ static void msg_reload_services(int msg_type, struct process_id src, void *buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* React on 'smbcontrol winbindd shutdown' in the same way as on SIGTERM*/
|
/* React on 'smbcontrol winbindd shutdown' in the same way as on SIGTERM*/
|
||||||
static void msg_shutdown(int msg_type, struct process_id src, void *buf, size_t len)
|
static void msg_shutdown(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
do_sigterm = True;
|
do_sigterm = True;
|
||||||
}
|
}
|
||||||
@ -877,7 +879,7 @@ static void process_loop(void)
|
|||||||
|
|
||||||
DEBUG(3, ("got SIGHUP\n"));
|
DEBUG(3, ("got SIGHUP\n"));
|
||||||
|
|
||||||
msg_reload_services(MSG_SMB_CONF_UPDATED, pid_to_procid(0), NULL, 0);
|
msg_reload_services(MSG_SMB_CONF_UPDATED, pid_to_procid(0), NULL, 0, NULL);
|
||||||
do_sighup = False;
|
do_sighup = False;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1075,13 +1077,14 @@ int main(int argc, char **argv, char **envp)
|
|||||||
|
|
||||||
/* React on 'smbcontrol winbindd reload-config' in the same way
|
/* React on 'smbcontrol winbindd reload-config' in the same way
|
||||||
as to SIGHUP signal */
|
as to SIGHUP signal */
|
||||||
message_register(MSG_SMB_CONF_UPDATED, msg_reload_services);
|
message_register(MSG_SMB_CONF_UPDATED, msg_reload_services, NULL);
|
||||||
message_register(MSG_SHUTDOWN, msg_shutdown);
|
message_register(MSG_SHUTDOWN, msg_shutdown, NULL);
|
||||||
|
|
||||||
/* Handle online/offline messages. */
|
/* Handle online/offline messages. */
|
||||||
message_register(MSG_WINBIND_OFFLINE,winbind_msg_offline);
|
message_register(MSG_WINBIND_OFFLINE, winbind_msg_offline, NULL);
|
||||||
message_register(MSG_WINBIND_ONLINE,winbind_msg_online);
|
message_register(MSG_WINBIND_ONLINE, winbind_msg_online, NULL);
|
||||||
message_register(MSG_WINBIND_ONLINESTATUS,winbind_msg_onlinestatus);
|
message_register(MSG_WINBIND_ONLINESTATUS, winbind_msg_onlinestatus,
|
||||||
|
NULL);
|
||||||
|
|
||||||
poptFreeContext(pc);
|
poptFreeContext(pc);
|
||||||
|
|
||||||
|
@ -82,7 +82,8 @@ static BOOL get_dcs(TALLOC_CTX *mem_ctx, const struct winbindd_domain *domain,
|
|||||||
Child failed to find DC's. Reschedule check.
|
Child failed to find DC's. Reschedule check.
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
static void msg_failed_to_go_online(int msg_type, struct process_id src, void *buf, size_t len)
|
static void msg_failed_to_go_online(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_domain *domain;
|
struct winbindd_domain *domain;
|
||||||
const char *domainname = (const char *)buf;
|
const char *domainname = (const char *)buf;
|
||||||
@ -117,7 +118,8 @@ static void msg_failed_to_go_online(int msg_type, struct process_id src, void *b
|
|||||||
Actually cause a reconnect from a message.
|
Actually cause a reconnect from a message.
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
static void msg_try_to_go_online(int msg_type, struct process_id src, void *buf, size_t len)
|
static void msg_try_to_go_online(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_domain *domain;
|
struct winbindd_domain *domain;
|
||||||
const char *domainname = (const char *)buf;
|
const char *domainname = (const char *)buf;
|
||||||
@ -182,8 +184,10 @@ static BOOL fork_child_dc_connect(struct winbindd_domain *domain)
|
|||||||
|
|
||||||
if (child_pid != 0) {
|
if (child_pid != 0) {
|
||||||
/* Parent */
|
/* Parent */
|
||||||
message_register(MSG_WINBIND_TRY_TO_GO_ONLINE,msg_try_to_go_online);
|
message_register(MSG_WINBIND_TRY_TO_GO_ONLINE,
|
||||||
message_register(MSG_WINBIND_FAILED_TO_GO_ONLINE,msg_failed_to_go_online);
|
msg_try_to_go_online, NULL);
|
||||||
|
message_register(MSG_WINBIND_FAILED_TO_GO_ONLINE,
|
||||||
|
msg_failed_to_go_online, NULL);
|
||||||
message_unblock();
|
message_unblock();
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
@ -476,7 +476,8 @@ void winbindd_flush_negative_conn_cache(struct winbindd_domain *domain)
|
|||||||
|
|
||||||
/* Set our domains as offline and forward the offline message to our children. */
|
/* Set our domains as offline and forward the offline message to our children. */
|
||||||
|
|
||||||
void winbind_msg_offline(int msg_type, struct process_id src, void *buf, size_t len)
|
void winbind_msg_offline(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_child *child;
|
struct winbindd_child *child;
|
||||||
struct winbindd_domain *domain;
|
struct winbindd_domain *domain;
|
||||||
@ -527,7 +528,8 @@ void winbind_msg_offline(int msg_type, struct process_id src, void *buf, size_t
|
|||||||
|
|
||||||
/* Set our domains as online and forward the online message to our children. */
|
/* Set our domains as online and forward the online message to our children. */
|
||||||
|
|
||||||
void winbind_msg_online(int msg_type, struct process_id src, void *buf, size_t len)
|
void winbind_msg_online(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_child *child;
|
struct winbindd_child *child;
|
||||||
struct winbindd_domain *domain;
|
struct winbindd_domain *domain;
|
||||||
@ -579,7 +581,8 @@ void winbind_msg_online(int msg_type, struct process_id src, void *buf, size_t l
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Forward the online/offline messages to our children. */
|
/* Forward the online/offline messages to our children. */
|
||||||
void winbind_msg_onlinestatus(int msg_type, struct process_id src, void *buf, size_t len)
|
void winbind_msg_onlinestatus(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_child *child;
|
struct winbindd_child *child;
|
||||||
|
|
||||||
@ -641,7 +644,8 @@ static void account_lockout_policy_handler(struct event_context *ctx,
|
|||||||
|
|
||||||
/* Deal with a request to go offline. */
|
/* Deal with a request to go offline. */
|
||||||
|
|
||||||
static void child_msg_offline(int msg_type, struct process_id src, void *buf, size_t len)
|
static void child_msg_offline(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_domain *domain;
|
struct winbindd_domain *domain;
|
||||||
const char *domainname = (const char *)buf;
|
const char *domainname = (const char *)buf;
|
||||||
@ -678,7 +682,8 @@ static void child_msg_offline(int msg_type, struct process_id src, void *buf, si
|
|||||||
|
|
||||||
/* Deal with a request to go online. */
|
/* Deal with a request to go online. */
|
||||||
|
|
||||||
static void child_msg_online(int msg_type, struct process_id src, void *buf, size_t len)
|
static void child_msg_online(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
struct winbindd_domain *domain;
|
struct winbindd_domain *domain;
|
||||||
const char *domainname = (const char *)buf;
|
const char *domainname = (const char *)buf;
|
||||||
@ -739,7 +744,8 @@ static const char *collect_onlinestatus(TALLOC_CTX *mem_ctx)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void child_msg_onlinestatus(int msg_type, struct process_id src, void *buf, size_t len)
|
static void child_msg_onlinestatus(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
TALLOC_CTX *mem_ctx;
|
TALLOC_CTX *mem_ctx;
|
||||||
const char *message;
|
const char *message;
|
||||||
@ -843,9 +849,10 @@ static BOOL fork_domain_child(struct winbindd_child *child)
|
|||||||
message_unblock();
|
message_unblock();
|
||||||
|
|
||||||
/* Handle online/offline messages. */
|
/* Handle online/offline messages. */
|
||||||
message_register(MSG_WINBIND_OFFLINE,child_msg_offline);
|
message_register(MSG_WINBIND_OFFLINE, child_msg_offline, NULL);
|
||||||
message_register(MSG_WINBIND_ONLINE,child_msg_online);
|
message_register(MSG_WINBIND_ONLINE, child_msg_online, NULL);
|
||||||
message_register(MSG_WINBIND_ONLINESTATUS,child_msg_onlinestatus);
|
message_register(MSG_WINBIND_ONLINESTATUS, child_msg_onlinestatus,
|
||||||
|
NULL);
|
||||||
|
|
||||||
if ( child->domain ) {
|
if ( child->domain ) {
|
||||||
child->domain->startup = True;
|
child->domain->startup = True;
|
||||||
|
@ -629,14 +629,15 @@ BOOL nt_printing_init(void)
|
|||||||
* drivers are installed
|
* drivers are installed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
message_register( MSG_PRINTER_DRVUPGRADE, do_drv_upgrade_printer );
|
message_register(MSG_PRINTER_DRVUPGRADE, do_drv_upgrade_printer, NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* register callback to handle updating printer data
|
* register callback to handle updating printer data
|
||||||
* when a driver is initialized
|
* when a driver is initialized
|
||||||
*/
|
*/
|
||||||
|
|
||||||
message_register( MSG_PRINTERDATA_INIT_RESET, reset_all_printerdata );
|
message_register(MSG_PRINTERDATA_INIT_RESET, reset_all_printerdata,
|
||||||
|
NULL);
|
||||||
|
|
||||||
/* of course, none of the message callbacks matter if you don't
|
/* of course, none of the message callbacks matter if you don't
|
||||||
tell messages.c that you interested in receiving PRINT_GENERAL
|
tell messages.c that you interested in receiving PRINT_GENERAL
|
||||||
|
@ -1352,7 +1352,8 @@ static void print_queue_update_with_lock( const char *sharename,
|
|||||||
this is the receive function of the background lpq updater
|
this is the receive function of the background lpq updater
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static void print_queue_receive(int msg_type, struct process_id src,
|
static void print_queue_receive(int msg_type, struct process_id src,
|
||||||
void *buf, size_t msglen)
|
void *buf, size_t msglen,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
fstring sharename;
|
fstring sharename;
|
||||||
pstring lpqcommand, lprmcommand;
|
pstring lpqcommand, lprmcommand;
|
||||||
@ -1403,7 +1404,8 @@ void start_background_queue(void)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
message_register(MSG_PRINTER_UPDATE, print_queue_receive);
|
message_register(MSG_PRINTER_UPDATE, print_queue_receive,
|
||||||
|
NULL);
|
||||||
|
|
||||||
DEBUG(5,("start_background_queue: background LPQ thread waiting for messages\n"));
|
DEBUG(5,("start_background_queue: background LPQ thread waiting for messages\n"));
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -44,7 +44,8 @@ BOOL do_profile_times = False;
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
receive a set profile level message
|
receive a set profile level message
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void profile_message(int msg_type, struct process_id src, void *buf, size_t len)
|
void profile_message(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
int level;
|
int level;
|
||||||
|
|
||||||
@ -97,7 +98,7 @@ void profile_message(int msg_type, struct process_id src, void *buf, size_t len)
|
|||||||
receive a request profile level message
|
receive a request profile level message
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void reqprofile_message(int msg_type, struct process_id src,
|
void reqprofile_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
int level;
|
int level;
|
||||||
|
|
||||||
@ -246,8 +247,8 @@ BOOL profile_setup(BOOL rdonly)
|
|||||||
}
|
}
|
||||||
|
|
||||||
profile_p = &profile_h->stats;
|
profile_p = &profile_h->stats;
|
||||||
message_register(MSG_PROFILE, profile_message);
|
message_register(MSG_PROFILE, profile_message, NULL);
|
||||||
message_register(MSG_REQ_PROFILELEVEL, reqprofile_message);
|
message_register(MSG_REQ_PROFILELEVEL, reqprofile_message, NULL);
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1107,7 +1107,8 @@ static BOOL notify2_unpack_msg( SPOOLSS_NOTIFY_MSG *msg, struct timeval *tv, voi
|
|||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
static void receive_notify2_message_list(int msg_type, struct process_id src,
|
static void receive_notify2_message_list(int msg_type, struct process_id src,
|
||||||
void *msg, size_t len)
|
void *msg, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
size_t msg_count, i;
|
size_t msg_count, i;
|
||||||
char *buf = (char *)msg;
|
char *buf = (char *)msg;
|
||||||
@ -1219,7 +1220,8 @@ static BOOL srv_spoolss_drv_upgrade_printer(char* drivername)
|
|||||||
over all printers, upgrading ones as necessary
|
over all printers, upgrading ones as necessary
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
void do_drv_upgrade_printer(int msg_type, struct process_id src, void *buf, size_t len)
|
void do_drv_upgrade_printer(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
fstring drivername;
|
fstring drivername;
|
||||||
int snum;
|
int snum;
|
||||||
@ -1317,7 +1319,7 @@ static BOOL srv_spoolss_reset_printerdata(char* drivername)
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
void reset_all_printerdata(int msg_type, struct process_id src,
|
void reset_all_printerdata(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
fstring drivername;
|
fstring drivername;
|
||||||
int snum;
|
int snum;
|
||||||
@ -2597,7 +2599,8 @@ static BOOL srv_spoolss_replyopenprinter(int snum, const char *printer,
|
|||||||
if ( !spoolss_connect_to_client( ¬ify_cli_pipe, client_ip, unix_printer ))
|
if ( !spoolss_connect_to_client( ¬ify_cli_pipe, client_ip, unix_printer ))
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
message_register(MSG_PRINTER_NOTIFY2, receive_notify2_message_list);
|
message_register(MSG_PRINTER_NOTIFY2,
|
||||||
|
receive_notify2_message_list, NULL);
|
||||||
/* Tell the connections db we're now interested in printer
|
/* Tell the connections db we're now interested in printer
|
||||||
* notify messages. */
|
* notify messages. */
|
||||||
register_message_flags( True, FLAG_MSG_PRINT_NOTIFY );
|
register_message_flags( True, FLAG_MSG_PRINT_NOTIFY );
|
||||||
|
@ -71,7 +71,8 @@ static BOOL in_chained_smb(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void received_unlock_msg(int msg_type, struct process_id src,
|
static void received_unlock_msg(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len);
|
void *buf, size_t len,
|
||||||
|
void *private_data);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Function to push a blocking lock request onto the lock queue.
|
Function to push a blocking lock request onto the lock queue.
|
||||||
@ -154,7 +155,8 @@ BOOL push_blocking_lock_request( struct byte_range_lock *br_lck,
|
|||||||
|
|
||||||
/* Ensure we'll receive messages when this is unlocked. */
|
/* Ensure we'll receive messages when this is unlocked. */
|
||||||
if (!set_lock_msg) {
|
if (!set_lock_msg) {
|
||||||
message_register(MSG_SMB_UNLOCK, received_unlock_msg);
|
message_register(MSG_SMB_UNLOCK, received_unlock_msg,
|
||||||
|
NULL);
|
||||||
set_lock_msg = True;
|
set_lock_msg = True;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -581,7 +583,8 @@ BOOL blocking_lock_was_deferred(int mid)
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
static void received_unlock_msg(int msg_type, struct process_id src,
|
static void received_unlock_msg(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
DEBUG(10,("received_unlock_msg\n"));
|
DEBUG(10,("received_unlock_msg\n"));
|
||||||
process_blocking_lock_queue();
|
process_blocking_lock_queue();
|
||||||
@ -775,8 +778,10 @@ void process_blocking_lock_queue(void)
|
|||||||
|
|
||||||
#define MSG_BLOCKING_LOCK_CANCEL_SIZE (sizeof(blocking_lock_record *) + sizeof(NTSTATUS))
|
#define MSG_BLOCKING_LOCK_CANCEL_SIZE (sizeof(blocking_lock_record *) + sizeof(NTSTATUS))
|
||||||
|
|
||||||
static void process_blocking_lock_cancel_message(int msg_type, struct process_id src,
|
static void process_blocking_lock_cancel_message(int msg_type,
|
||||||
void *buf, size_t len)
|
struct process_id src,
|
||||||
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
NTSTATUS err;
|
NTSTATUS err;
|
||||||
const char *msg = (const char *)buf;
|
const char *msg = (const char *)buf;
|
||||||
@ -822,7 +827,8 @@ BOOL blocking_lock_cancel(files_struct *fsp,
|
|||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
/* Register our message. */
|
/* Register our message. */
|
||||||
message_register(MSG_SMB_BLOCKING_LOCK_CANCEL,
|
message_register(MSG_SMB_BLOCKING_LOCK_CANCEL,
|
||||||
process_blocking_lock_cancel_message);
|
process_blocking_lock_cancel_message,
|
||||||
|
NULL);
|
||||||
|
|
||||||
initialized = True;
|
initialized = True;
|
||||||
}
|
}
|
||||||
|
@ -311,7 +311,8 @@ the message contains just a share name and all instances of that
|
|||||||
share are unmounted
|
share are unmounted
|
||||||
the special sharename '*' forces unmount of all shares
|
the special sharename '*' forces unmount of all shares
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void msg_force_tdis(int msg_type, struct process_id pid, void *buf, size_t len)
|
void msg_force_tdis(int msg_type, struct process_id pid, void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
connection_struct *conn, *next;
|
connection_struct *conn, *next;
|
||||||
fstring sharename;
|
fstring sharename;
|
||||||
|
@ -498,7 +498,8 @@ void notify_fsp(files_struct *fsp, uint32 action, char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void notify_message_callback(int msgtype, struct process_id pid,
|
static void notify_message_callback(int msgtype, struct process_id pid,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct notify_message msg;
|
struct notify_message msg;
|
||||||
files_struct *fsp;
|
files_struct *fsp;
|
||||||
@ -548,7 +549,7 @@ BOOL init_change_notify(void)
|
|||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
message_register(MSG_SMB_NOTIFY, notify_message_callback);
|
message_register(MSG_SMB_NOTIFY, notify_message_callback, NULL);
|
||||||
|
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
@ -2210,7 +2210,8 @@ NTSTATUS open_file_stat(connection_struct *conn, const char *fname,
|
|||||||
smbd process.
|
smbd process.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void msg_file_was_renamed(int msg_type, struct process_id src, void *buf, size_t len)
|
void msg_file_was_renamed(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
files_struct *fsp;
|
files_struct *fsp;
|
||||||
char *frm = (char *)buf;
|
char *frm = (char *)buf;
|
||||||
|
@ -392,7 +392,8 @@ static void add_oplock_timeout_handler(files_struct *fsp)
|
|||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
|
|
||||||
static void process_oplock_async_level2_break_message(int msg_type, struct process_id src,
|
static void process_oplock_async_level2_break_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct share_mode_entry msg;
|
struct share_mode_entry msg;
|
||||||
files_struct *fsp;
|
files_struct *fsp;
|
||||||
@ -478,7 +479,8 @@ static void process_oplock_async_level2_break_message(int msg_type, struct proce
|
|||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
|
|
||||||
static void process_oplock_break_message(int msg_type, struct process_id src,
|
static void process_oplock_break_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct share_mode_entry msg;
|
struct share_mode_entry msg;
|
||||||
files_struct *fsp;
|
files_struct *fsp;
|
||||||
@ -586,7 +588,8 @@ static void process_oplock_break_message(int msg_type, struct process_id src,
|
|||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
|
|
||||||
static void process_kernel_oplock_break(int msg_type, struct process_id src,
|
static void process_kernel_oplock_break(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
SMB_DEV_T dev;
|
SMB_DEV_T dev;
|
||||||
SMB_INO_T inode;
|
SMB_INO_T inode;
|
||||||
@ -677,7 +680,8 @@ void reply_to_oplock_break_requests(files_struct *fsp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void process_oplock_break_response(int msg_type, struct process_id src,
|
static void process_oplock_break_response(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct share_mode_entry msg;
|
struct share_mode_entry msg;
|
||||||
|
|
||||||
@ -704,7 +708,8 @@ static void process_oplock_break_response(int msg_type, struct process_id src,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void process_open_retry_message(int msg_type, struct process_id src,
|
static void process_open_retry_message(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len,
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
struct share_mode_entry msg;
|
struct share_mode_entry msg;
|
||||||
|
|
||||||
@ -858,15 +863,20 @@ BOOL init_oplocks(void)
|
|||||||
DEBUG(3,("init_oplocks: initializing messages.\n"));
|
DEBUG(3,("init_oplocks: initializing messages.\n"));
|
||||||
|
|
||||||
message_register(MSG_SMB_BREAK_REQUEST,
|
message_register(MSG_SMB_BREAK_REQUEST,
|
||||||
process_oplock_break_message);
|
process_oplock_break_message,
|
||||||
|
NULL);
|
||||||
message_register(MSG_SMB_ASYNC_LEVEL2_BREAK,
|
message_register(MSG_SMB_ASYNC_LEVEL2_BREAK,
|
||||||
process_oplock_async_level2_break_message);
|
process_oplock_async_level2_break_message,
|
||||||
|
NULL);
|
||||||
message_register(MSG_SMB_BREAK_RESPONSE,
|
message_register(MSG_SMB_BREAK_RESPONSE,
|
||||||
process_oplock_break_response);
|
process_oplock_break_response,
|
||||||
|
NULL);
|
||||||
message_register(MSG_SMB_KERNEL_BREAK,
|
message_register(MSG_SMB_KERNEL_BREAK,
|
||||||
process_kernel_oplock_break);
|
process_kernel_oplock_break,
|
||||||
|
NULL);
|
||||||
message_register(MSG_SMB_OPEN_RETRY,
|
message_register(MSG_SMB_OPEN_RETRY,
|
||||||
process_open_retry_message);
|
process_open_retry_message,
|
||||||
|
NULL);
|
||||||
|
|
||||||
if (lp_kernel_oplocks()) {
|
if (lp_kernel_oplocks()) {
|
||||||
#if HAVE_KERNEL_OPLOCKS_IRIX
|
#if HAVE_KERNEL_OPLOCKS_IRIX
|
||||||
|
@ -76,7 +76,7 @@ struct event_context *smbd_event_context(void)
|
|||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
static void smb_conf_updated(int msg_type, struct process_id src,
|
static void smb_conf_updated(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
DEBUG(10,("smb_conf_updated: Got message saying smb.conf was updated. Reloading.\n"));
|
DEBUG(10,("smb_conf_updated: Got message saying smb.conf was updated. Reloading.\n"));
|
||||||
reload_services(False);
|
reload_services(False);
|
||||||
@ -88,7 +88,7 @@ static void smb_conf_updated(int msg_type, struct process_id src,
|
|||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
static void smb_stat_cache_delete(int msg_type, struct process_id src,
|
static void smb_stat_cache_delete(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
const char *name = (const char *)buf;
|
const char *name = (const char *)buf;
|
||||||
DEBUG(10,("smb_stat_cache_delete: delete name %s\n", name));
|
DEBUG(10,("smb_stat_cache_delete: delete name %s\n", name));
|
||||||
@ -139,7 +139,8 @@ static void killkids(void)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void msg_sam_sync(int UNUSED(msg_type), struct process_id UNUSED(pid),
|
static void msg_sam_sync(int UNUSED(msg_type), struct process_id UNUSED(pid),
|
||||||
void *UNUSED(buf), size_t UNUSED(len))
|
void *UNUSED(buf), size_t UNUSED(len),
|
||||||
|
void *private_data)
|
||||||
{
|
{
|
||||||
DEBUG(10, ("** sam sync message received, ignoring\n"));
|
DEBUG(10, ("** sam sync message received, ignoring\n"));
|
||||||
}
|
}
|
||||||
@ -150,7 +151,7 @@ static void msg_sam_sync(int UNUSED(msg_type), struct process_id UNUSED(pid),
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void msg_sam_repl(int msg_type, struct process_id pid,
|
static void msg_sam_repl(int msg_type, struct process_id pid,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
uint32 low_serial;
|
uint32 low_serial;
|
||||||
|
|
||||||
@ -184,7 +185,7 @@ static BOOL open_sockets_inetd(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void msg_exit_server(int msg_type, struct process_id src,
|
static void msg_exit_server(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
DEBUG(3, ("got a SHUTDOWN message\n"));
|
DEBUG(3, ("got a SHUTDOWN message\n"));
|
||||||
exit_server_cleanly(NULL);
|
exit_server_cleanly(NULL);
|
||||||
@ -192,7 +193,7 @@ static void msg_exit_server(int msg_type, struct process_id src,
|
|||||||
|
|
||||||
#ifdef DEVELOPER
|
#ifdef DEVELOPER
|
||||||
static void msg_inject_fault(int msg_type, struct process_id src,
|
static void msg_inject_fault(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
int sig;
|
int sig;
|
||||||
|
|
||||||
@ -429,15 +430,16 @@ static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_
|
|||||||
|
|
||||||
/* Listen to messages */
|
/* Listen to messages */
|
||||||
|
|
||||||
message_register(MSG_SMB_SAM_SYNC, msg_sam_sync);
|
message_register(MSG_SMB_SAM_SYNC, msg_sam_sync, NULL);
|
||||||
message_register(MSG_SMB_SAM_REPL, msg_sam_repl);
|
message_register(MSG_SMB_SAM_REPL, msg_sam_repl, NULL);
|
||||||
message_register(MSG_SHUTDOWN, msg_exit_server);
|
message_register(MSG_SHUTDOWN, msg_exit_server, NULL);
|
||||||
message_register(MSG_SMB_FILE_RENAME, msg_file_was_renamed);
|
message_register(MSG_SMB_FILE_RENAME, msg_file_was_renamed, NULL);
|
||||||
message_register(MSG_SMB_CONF_UPDATED, smb_conf_updated);
|
message_register(MSG_SMB_CONF_UPDATED, smb_conf_updated, NULL);
|
||||||
message_register(MSG_SMB_STAT_CACHE_DELETE, smb_stat_cache_delete);
|
message_register(MSG_SMB_STAT_CACHE_DELETE, smb_stat_cache_delete,
|
||||||
|
NULL);
|
||||||
|
|
||||||
#ifdef DEVELOPER
|
#ifdef DEVELOPER
|
||||||
message_register(MSG_SMB_INJECT_FAULT, msg_inject_fault);
|
message_register(MSG_SMB_INJECT_FAULT, msg_inject_fault, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* now accept incoming connections - forking a new process
|
/* now accept incoming connections - forking a new process
|
||||||
@ -1097,7 +1099,7 @@ extern void build_options(BOOL screen);
|
|||||||
TimeInit();
|
TimeInit();
|
||||||
|
|
||||||
/* register our message handlers */
|
/* register our message handlers */
|
||||||
message_register(MSG_SMB_FORCE_TDIS, msg_force_tdis);
|
message_register(MSG_SMB_FORCE_TDIS, msg_force_tdis, NULL);
|
||||||
|
|
||||||
smbd_process();
|
smbd_process();
|
||||||
|
|
||||||
|
@ -29,7 +29,8 @@ static int pong_count;
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
a useful function for testing the message system
|
a useful function for testing the message system
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static void pong_message(int msg_type, struct process_id src, void *buf, size_t len)
|
static void pong_message(int msg_type, struct process_id src,
|
||||||
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
pong_count++;
|
pong_count++;
|
||||||
}
|
}
|
||||||
@ -57,7 +58,7 @@ static void pong_message(int msg_type, struct process_id src, void *buf, size_t
|
|||||||
pid = atoi(argv[1]);
|
pid = atoi(argv[1]);
|
||||||
n = atoi(argv[2]);
|
n = atoi(argv[2]);
|
||||||
|
|
||||||
message_register(MSG_PONG, pong_message);
|
message_register(MSG_PONG, pong_message, NULL);
|
||||||
|
|
||||||
for (i=0;i<n;i++) {
|
for (i=0;i<n;i++) {
|
||||||
message_send_pid(pid_to_procid(pid), MSG_PING, NULL, 0, True);
|
message_send_pid(pid_to_procid(pid), MSG_PING, NULL, 0, True);
|
||||||
|
@ -1802,7 +1802,7 @@ static int net_ads_printer_info(int argc, const char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void do_drv_upgrade_printer(int msg_type, struct process_id src,
|
void do_drv_upgrade_printer(int msg_type, struct process_id src,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,8 @@ static void wait_replies(BOOL multiple_replies)
|
|||||||
|
|
||||||
/* Message handler callback that displays the PID and a string on stdout */
|
/* Message handler callback that displays the PID and a string on stdout */
|
||||||
|
|
||||||
static void print_pid_string_cb(int msg_type, struct process_id pid, void *buf, size_t len)
|
static void print_pid_string_cb(int msg_type, struct process_id pid, void *buf,
|
||||||
|
size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
printf("PID %u: %.*s", (unsigned int)procid_to_pid(&pid),
|
printf("PID %u: %.*s", (unsigned int)procid_to_pid(&pid),
|
||||||
(int)len, (const char *)buf);
|
(int)len, (const char *)buf);
|
||||||
@ -108,7 +109,7 @@ static void print_pid_string_cb(int msg_type, struct process_id pid, void *buf,
|
|||||||
/* Message handler callback that displays a string on stdout */
|
/* Message handler callback that displays a string on stdout */
|
||||||
|
|
||||||
static void print_string_cb(int msg_type, struct process_id pid,
|
static void print_string_cb(int msg_type, struct process_id pid,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
printf("%.*s", (int)len, (const char *)buf);
|
printf("%.*s", (int)len, (const char *)buf);
|
||||||
num_replies++;
|
num_replies++;
|
||||||
@ -371,7 +372,8 @@ static BOOL do_election(const struct process_id pid,
|
|||||||
|
|
||||||
/* Ping a samba daemon process */
|
/* Ping a samba daemon process */
|
||||||
|
|
||||||
static void pong_cb(int msg_type, struct process_id pid, void *buf, size_t len)
|
static void pong_cb(int msg_type, struct process_id pid, void *buf,
|
||||||
|
size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
char *src_string = procid_str(NULL, &pid);
|
char *src_string = procid_str(NULL, &pid);
|
||||||
printf("PONG from pid %s\n", src_string);
|
printf("PONG from pid %s\n", src_string);
|
||||||
@ -391,7 +393,7 @@ static BOOL do_ping(const struct process_id pid, const int argc, const char **ar
|
|||||||
if (!send_message(pid, MSG_PING, NULL, 0, False))
|
if (!send_message(pid, MSG_PING, NULL, 0, False))
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
message_register(MSG_PONG, pong_cb);
|
message_register(MSG_PONG, pong_cb, NULL);
|
||||||
|
|
||||||
wait_replies(procid_to_pid(&pid) == 0);
|
wait_replies(procid_to_pid(&pid) == 0);
|
||||||
|
|
||||||
@ -436,7 +438,8 @@ static BOOL do_profile(const struct process_id pid,
|
|||||||
|
|
||||||
/* Return the profiling level */
|
/* Return the profiling level */
|
||||||
|
|
||||||
static void profilelevel_cb(int msg_type, struct process_id pid, void *buf, size_t len)
|
static void profilelevel_cb(int msg_type, struct process_id pid, void *buf,
|
||||||
|
size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
int level;
|
int level;
|
||||||
const char *s;
|
const char *s;
|
||||||
@ -473,7 +476,7 @@ static void profilelevel_cb(int msg_type, struct process_id pid, void *buf, size
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void profilelevel_rqst(int msg_type, struct process_id pid,
|
static void profilelevel_rqst(int msg_type, struct process_id pid,
|
||||||
void *buf, size_t len)
|
void *buf, size_t len, void *private_data)
|
||||||
{
|
{
|
||||||
int v = 0;
|
int v = 0;
|
||||||
|
|
||||||
@ -495,8 +498,8 @@ static BOOL do_profilelevel(const struct process_id pid,
|
|||||||
if (!send_message(pid, MSG_REQ_PROFILELEVEL, NULL, 0, False))
|
if (!send_message(pid, MSG_REQ_PROFILELEVEL, NULL, 0, False))
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
message_register(MSG_PROFILELEVEL, profilelevel_cb);
|
message_register(MSG_PROFILELEVEL, profilelevel_cb, NULL);
|
||||||
message_register(MSG_REQ_PROFILELEVEL, profilelevel_rqst);
|
message_register(MSG_REQ_PROFILELEVEL, profilelevel_rqst, NULL);
|
||||||
|
|
||||||
wait_replies(procid_to_pid(&pid) == 0);
|
wait_replies(procid_to_pid(&pid) == 0);
|
||||||
|
|
||||||
@ -525,7 +528,7 @@ static BOOL do_debuglevel(const struct process_id pid,
|
|||||||
if (!send_message(pid, MSG_REQ_DEBUGLEVEL, NULL, 0, False))
|
if (!send_message(pid, MSG_REQ_DEBUGLEVEL, NULL, 0, False))
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
message_register(MSG_DEBUGLEVEL, print_pid_string_cb);
|
message_register(MSG_DEBUGLEVEL, print_pid_string_cb, NULL);
|
||||||
|
|
||||||
wait_replies(procid_to_pid(&pid) == 0);
|
wait_replies(procid_to_pid(&pid) == 0);
|
||||||
|
|
||||||
@ -732,7 +735,7 @@ static BOOL do_poolusage(const struct process_id pid,
|
|||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
message_register(MSG_POOL_USAGE, print_string_cb);
|
message_register(MSG_POOL_USAGE, print_string_cb, NULL);
|
||||||
|
|
||||||
/* Send a message and register our interest in a reply */
|
/* Send a message and register our interest in a reply */
|
||||||
|
|
||||||
@ -923,7 +926,7 @@ static BOOL do_winbind_onlinestatus(const struct process_id pid,
|
|||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
message_register(MSG_WINBIND_ONLINESTATUS, print_pid_string_cb);
|
message_register(MSG_WINBIND_ONLINESTATUS, print_pid_string_cb, NULL);
|
||||||
|
|
||||||
if (!send_message(pid, MSG_WINBIND_ONLINESTATUS, &myid, sizeof(myid), False))
|
if (!send_message(pid, MSG_WINBIND_ONLINESTATUS, &myid, sizeof(myid), False))
|
||||||
return False;
|
return False;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user