[PATCH] smbcontrolify config updates
Alexander Bokovoy
a.bokovoy at sam-solutions.net
Tue Jul 8 15:52:19 GMT 2003
Greetings!
Following patch adds support to force daemons to reload smb.conf on
'smbcontrol <dest> reload-config' command. This basically does the same as
SIGHUP signal sent to winbindd and nmbd, and for smbd it uses already
existing message handler.
What do you think about it?
--
/ Alexander Bokovoy
---
When the ax entered the forest, the trees said, "The handle is one of us!"
-- Turkish proverb
-------------- next part --------------
Index: docs/docbook/manpages/smbcontrol.1.xml
===================================================================
RCS file: /home/cvs/samba/docs/docbook/manpages/smbcontrol.1.xml,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 smbcontrol.1.xml
--- docs/docbook/manpages/smbcontrol.1.xml 1 May 2003 14:00:10 -0000 1.1.2.1
+++ docs/docbook/manpages/smbcontrol.1.xml 8 Jul 2003 15:47:24 -0000
@@ -254,6 +254,13 @@
sent to smbd.</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term>reload-config</term>
+ <listitem><para>Force daemon to reload smb.conf configuration file. Can be sent
+ to <constant>smbd</constant>, <constant>nmbd</constant>, or <constant>winbindd</constant>.
+ </para></listitem>
+ </varlistentry>
+
</variablelist>
</refsect1>
Index: source/nmbd/nmbd.c
===================================================================
RCS file: /home/cvs/samba/source/nmbd/nmbd.c,v
retrieving revision 1.134.2.15
diff -u -r1.134.2.15 nmbd.c
--- source/nmbd/nmbd.c 10 May 2003 11:49:50 -0000 1.134.2.15
+++ source/nmbd/nmbd.c 8 Jul 2003 15:47:25 -0000
@@ -298,6 +298,18 @@
return(ret);
}
+/* React on 'smbcontrol nmbd reload-config' in the same way as to SIGHUP */
+static void msg_reload_nmbd_services(int msg_type, pid_t src, void *buf, size_t len)
+{
+ write_browse_list( 0, True );
+ dump_all_namelists();
+ reload_nmbd_services( True );
+ reopen_logs();
+ if(reload_interfaces(0))
+ return;
+}
+
+
/**************************************************************************** **
The main select loop.
**************************************************************************** */
@@ -696,6 +708,7 @@
message_register(MSG_FORCE_ELECTION, nmbd_message_election);
message_register(MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry);
message_register(MSG_SHUTDOWN, nmbd_terminate);
+ message_register(MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services);
DEBUG( 3, ( "Opening sockets %d\n", global_nmb_port ) );
Index: source/nsswitch/winbindd.c
===================================================================
RCS file: /home/cvs/samba/source/nsswitch/winbindd.c,v
retrieving revision 1.55.2.31
diff -u -r1.55.2.31 winbindd.c
--- source/nsswitch/winbindd.c 27 Jun 2003 20:55:47 -0000 1.55.2.31
+++ source/nsswitch/winbindd.c 8 Jul 2003 15:47:26 -0000
@@ -52,6 +52,14 @@
return(ret);
}
+/* React on 'smbcontrol winbindd reload-config' in the same way as on SIGHUP*/
+static void msg_reload_services(int, pid_t, void *, size_t)
+{
+ /* Flush various caches */
+ flush_caches();
+ reload_services_file(True);
+}
+
#if DUMP_CORE
/**************************************************************************** **
@@ -896,6 +904,11 @@
DEBUG(0, ("unable to initialise messaging system\n"));
exit(1);
}
+
+ /* React on 'smbcontrol winbindd reload-config' in the same way
+ as to SIGHUP signal */
+ message_register(MSG_SMB_CONF_UPDATED, msg_reload_services);
+
poptFreeContext(pc);
netsamlogon_cache_init(); /* Non-critical */
Index: source/utils/smbcontrol.c
===================================================================
RCS file: /home/cvs/samba/source/utils/smbcontrol.c,v
retrieving revision 1.42.2.20
diff -u -r1.42.2.20 smbcontrol.c
--- source/utils/smbcontrol.c 27 Jun 2003 20:55:48 -0000 1.42.2.20
+++ source/utils/smbcontrol.c 8 Jul 2003 15:47:27 -0000
@@ -553,6 +553,16 @@
pid, MSG_DEBUG, argv[1], strlen(argv[1]) + 1, False);
}
+static BOOL do_reload_config(const pid_t pid, const int argc, const char **argv)
+{
+ if (argc != 1) {
+ fprintf(stderr, "Usage: smbcontrol <dest> reload-config\n");
+ return False;
+ }
+
+ return send_message(pid, MSG_SMB_CONF_UPDATED, NULL, 0, False);
+}
+
/* A list of message type supported */
static const struct {
@@ -576,6 +586,7 @@
{ "dmalloc-log-changed", do_dmalloc_changed, "" },
{ "shutdown", do_shutdown, "Shut down daemon" },
{ "drvupgrade", do_drvupgrade, "Notify a printer driver has changed" },
+ { "reload-config", do_reload_config, "Force smbd or winbindd to reload config file"},
{ "noop", do_noop, "Do nothing" },
{ NULL }
};
More information about the samba-technical
mailing list