xref: /netbsd-src/external/ibm-public/postfix/dist/src/master/master_service.c (revision a30b880ed60a24c405edba78187a04247f4d9d33)
1*a30b880eStron /*	$NetBSD: master_service.c,v 1.1.1.2 2013/01/02 18:59:01 tron Exp $	*/
241fbaed0Stron 
341fbaed0Stron /*++
441fbaed0Stron /* NAME
541fbaed0Stron /*	master_service 3
641fbaed0Stron /* SUMMARY
741fbaed0Stron /*	Postfix master - start/stop services
841fbaed0Stron /* SYNOPSIS
941fbaed0Stron /*	#include "master.h"
1041fbaed0Stron /*
1141fbaed0Stron /*	void	master_start_service(serv)
1241fbaed0Stron /*	MASTER_SERV *serv;
1341fbaed0Stron /*
1441fbaed0Stron /*	void	master_stop_service(serv)
1541fbaed0Stron /*	MASTER_SERV *serv;
1641fbaed0Stron /*
17*a30b880eStron /*	void	master_restart_service(serv, conf_reload)
1841fbaed0Stron /*	MASTER_SERV *serv;
19*a30b880eStron /*	int	conf_reload;
2041fbaed0Stron /* DESCRIPTION
2141fbaed0Stron /*	master_start_service() enables the named service.
2241fbaed0Stron /*
2341fbaed0Stron /*	master_stop_service() disables named service.
2441fbaed0Stron /*
2541fbaed0Stron /*	master_restart_service() requests all running child processes to
26*a30b880eStron /*	commit suicide.  The conf_reload argument is either DO_CONF_RELOAD
27*a30b880eStron /*	(configuration files were reloaded, re-evaluate the child process
28*a30b880eStron /*	creation policy) or NO_CONF_RELOAD.
2941fbaed0Stron /* DIAGNOSTICS
3041fbaed0Stron /* BUGS
3141fbaed0Stron /* SEE ALSO
3241fbaed0Stron /*	master_avail(3), process creation policy
3341fbaed0Stron /*	master_wakeup(3), service automatic wakeup
3441fbaed0Stron /*	master_status(3), child status reports
3541fbaed0Stron /*	master_listen(3), unix/inet listeners
3641fbaed0Stron /* LICENSE
3741fbaed0Stron /* .ad
3841fbaed0Stron /* .fi
3941fbaed0Stron /*	The Secure Mailer license must be distributed with this software.
4041fbaed0Stron /* AUTHOR(S)
4141fbaed0Stron /*	Wietse Venema
4241fbaed0Stron /*	IBM T.J. Watson Research
4341fbaed0Stron /*	P.O. Box 704
4441fbaed0Stron /*	Yorktown Heights, NY 10598, USA
4541fbaed0Stron /*--*/
4641fbaed0Stron 
4741fbaed0Stron /* System libraries. */
4841fbaed0Stron 
4941fbaed0Stron #include <sys_defs.h>
5041fbaed0Stron #include <string.h>
5141fbaed0Stron #include <unistd.h>
5241fbaed0Stron 
5341fbaed0Stron /* Utility library. */
5441fbaed0Stron 
5541fbaed0Stron #include <msg.h>
5641fbaed0Stron #include <mymalloc.h>
5741fbaed0Stron 
5841fbaed0Stron /* Application-specific. */
5941fbaed0Stron 
6041fbaed0Stron #include "master.h"
6141fbaed0Stron 
6241fbaed0Stron MASTER_SERV *master_head;
6341fbaed0Stron 
6441fbaed0Stron /* master_start_service - activate service */
6541fbaed0Stron 
master_start_service(MASTER_SERV * serv)6641fbaed0Stron void    master_start_service(MASTER_SERV *serv)
6741fbaed0Stron {
6841fbaed0Stron 
6941fbaed0Stron     /*
7041fbaed0Stron      * Enable connection requests, wakeup timers, and status updates from
7141fbaed0Stron      * child processes.
7241fbaed0Stron      */
7341fbaed0Stron     master_listen_init(serv);
7441fbaed0Stron     master_avail_listen(serv);
7541fbaed0Stron     master_status_init(serv);
7641fbaed0Stron     master_wakeup_init(serv);
7741fbaed0Stron }
7841fbaed0Stron 
7941fbaed0Stron /* master_stop_service - deactivate service */
8041fbaed0Stron 
master_stop_service(MASTER_SERV * serv)8141fbaed0Stron void    master_stop_service(MASTER_SERV *serv)
8241fbaed0Stron {
8341fbaed0Stron 
8441fbaed0Stron     /*
8541fbaed0Stron      * Undo the things that master_start_service() did.
8641fbaed0Stron      */
8741fbaed0Stron     master_wakeup_cleanup(serv);
8841fbaed0Stron     master_status_cleanup(serv);
8941fbaed0Stron     master_avail_cleanup(serv);
9041fbaed0Stron     master_listen_cleanup(serv);
9141fbaed0Stron }
9241fbaed0Stron 
9341fbaed0Stron /* master_restart_service - restart service after configuration reload */
9441fbaed0Stron 
master_restart_service(MASTER_SERV * serv,int conf_reload)95*a30b880eStron void    master_restart_service(MASTER_SERV *serv, int conf_reload)
9641fbaed0Stron {
9741fbaed0Stron 
9841fbaed0Stron     /*
9941fbaed0Stron      * Undo some of the things that master_start_service() did.
10041fbaed0Stron      */
10141fbaed0Stron     master_wakeup_cleanup(serv);
10241fbaed0Stron     master_status_cleanup(serv);
10341fbaed0Stron 
10441fbaed0Stron     /*
10541fbaed0Stron      * Now undo the undone.
10641fbaed0Stron      */
10741fbaed0Stron     master_status_init(serv);
10841fbaed0Stron     master_wakeup_init(serv);
109*a30b880eStron 
110*a30b880eStron     /*
111*a30b880eStron      * Respond to configuration change.
112*a30b880eStron      */
113*a30b880eStron     if (conf_reload)
114*a30b880eStron 	master_avail_listen(serv);
11541fbaed0Stron }
116