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