#include <config.h>#include <stdarg.h>#include <sys/types.h>#include <sys/stat.h>#include <ctype.h>#include <errno.h>#include <fcntl.h>#include <grp.h>#include <pwd.h>#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <syslog.h>#include <unistd.h>#include <isc/buffer.h>#include <isc/file.h>#include <isc/print.h>#include <isc/resource.h>#include <isc/result.h>#include <isc/strerror.h>#include <isc/string.h>#include <named/main.h>#include <named/os.h>Go to the source code of this file.
Defines | |
| #define | ISC_FACILITY LOG_DAEMON |
Functions | |
| static void | setup_syslog (const char *progname) |
| void | ns_os_init (const char *progname) |
| void | ns_os_daemonize (void) |
| void | ns_os_started (void) |
| void | ns_os_opendevnull (void) |
| void | ns_os_closedevnull (void) |
| static isc_boolean_t | all_digits (const char *s) |
| void | ns_os_chroot (const char *root) |
| void | ns_os_inituserinfo (const char *username) |
| void | ns_os_changeuser (void) |
| void | ns_os_adjustnofile (void) |
| void | ns_os_minprivs (void) |
| static int | safe_open (const char *filename, mode_t mode, isc_boolean_t append) |
| static void | cleanup_pidfile (void) |
| static void | cleanup_lockfile (void) |
| static int | mkdirpath (char *filename, void(*report)(const char *,...)) |
| static void | setperms (uid_t uid, gid_t gid) |
| FILE * | ns_os_openfile (const char *filename, mode_t mode, isc_boolean_t switch_user) |
| void | ns_os_writepidfile (const char *filename, isc_boolean_t first_time) |
| isc_boolean_t | ns_os_issingleton (const char *filename) |
| void | ns_os_shutdown (void) |
| isc_result_t | ns_os_gethostname (char *buf, size_t len) |
| static char * | next_token (char **stringp, const char *delim) |
| void | ns_os_shutdownmsg (char *command, isc_buffer_t *text) |
| void | ns_os_tzset (void) |
Variables | |
| static char * | pidfile = NULL |
| static char * | lockfile = NULL |
| static int | devnullfd = -1 |
| static int | singletonfd = -1 |
| static struct passwd * | runas_pw = NULL |
| static isc_boolean_t | done_setuid = ISC_FALSE |
| static int | dfd [2] = { -1, -1 } |
Definition in file os.c.
| static void setup_syslog | ( | const char * | progname | ) | [static] |
Definition at line 371 of file os.c.
References ISC_FACILITY, and isc_file_basename().
Referenced by ns_os_init().
| void ns_os_init | ( | const char * | progname | ) |
| void ns_os_daemonize | ( | void | ) |
Definition at line 396 of file os.c.
References devnullfd, dfd, isc__strerror(), ISC_STRERRORSIZE, and ns_main_earlyfatal().
Referenced by setup().
| void ns_os_started | ( | void | ) |
Definition at line 468 of file os.c.
References dfd, and ns_main_earlyfatal().
Referenced by view_loaded().
| void ns_os_opendevnull | ( | void | ) |
| void ns_os_closedevnull | ( | void | ) |
| static isc_boolean_t all_digits | ( | const char * | s | ) | [static] |
Definition at line 499 of file os.c.
References ISC_FALSE, and ISC_TRUE.
Referenced by ns_os_inituserinfo().
| void ns_os_chroot | ( | const char * | root | ) |
Definition at line 511 of file os.c.
References isc__strerror(), ISC_STRERRORSIZE, and ns_main_earlyfatal().
Referenced by setup().
| void ns_os_inituserinfo | ( | const char * | username | ) |
Definition at line 537 of file os.c.
References all_digits(), isc__strerror(), ISC_STRERRORSIZE, ns_main_earlyfatal(), and runas_pw.
Referenced by setup().
| void ns_os_changeuser | ( | void | ) |
Definition at line 561 of file os.c.
References done_setuid, isc__strerror(), ISC_STRERRORSIZE, ISC_TRUE, ns_main_earlyfatal(), ns_main_earlywarning(), and runas_pw.
Referenced by load_configuration(), and ns_os_minprivs().
| void ns_os_adjustnofile | ( | void | ) |
Definition at line 608 of file os.c.
References ISC_R_SUCCESS, isc_resource_openfiles, isc_resource_setlimit(), ISC_RESOURCE_UNLIMITED, and ns_main_earlywarning().
Referenced by setup().
| void ns_os_minprivs | ( | void | ) |
| static int safe_open | ( | const char * | filename, | |
| mode_t | mode, | |||
| isc_boolean_t | append | |||
| ) | [static] |
| static void cleanup_pidfile | ( | void | ) | [static] |
| static void cleanup_lockfile | ( | void | ) | [static] |
Definition at line 676 of file os.c.
References free(), lockfile, ns_main_earlywarning(), and singletonfd.
| static int mkdirpath | ( | char * | filename, | |
| void(*)(const char *,...) | report | |||
| ) | [static] |
Definition at line 697 of file os.c.
References error(), isc__strerror(), ISC_STRERRORSIZE, report(), and runas_pw.
Referenced by ns_os_openfile().
| static void setperms | ( | uid_t | uid, | |
| gid_t | gid | |||
| ) | [static] |
Definition at line 751 of file os.c.
References isc__strerror(), ISC_STRERRORSIZE, and ns_main_earlywarning().
Referenced by ns_os_openfile().
| FILE* ns_os_openfile | ( | const char * | filename, | |
| mode_t | mode, | |||
| isc_boolean_t | switch_user | |||
| ) |
Definition at line 793 of file os.c.
References free(), isc__strerror(), ISC_FALSE, ISC_STRERRORSIZE, mkdirpath(), ns_main_earlywarning(), runas_pw, safe_open(), setperms(), and strdup().
Referenced by generate_session_key().
| void ns_os_writepidfile | ( | const char * | filename, | |
| isc_boolean_t | first_time | |||
| ) |
| isc_boolean_t ns_os_issingleton | ( | const char * | filename | ) |
| void ns_os_shutdown | ( | void | ) |
| isc_result_t ns_os_gethostname | ( | char * | buf, | |
| size_t | len | |||
| ) |
Definition at line 984 of file os.c.
Referenced by do_hostname_lookup(), do_id_lookup(), and ns_client_addopt().
| static char* next_token | ( | char ** | stringp, | |
| const char * | delim | |||
| ) | [static] |
| void ns_os_shutdownmsg | ( | char * | command, | |
| isc_buffer_t * | text | |||
| ) |
char* pidfile = NULL [static] |
char* lockfile = NULL [static] |
int devnullfd = -1 [static] |
Definition at line 56 of file os.c.
Referenced by ns_os_closedevnull(), ns_os_daemonize(), and ns_os_opendevnull().
int singletonfd = -1 [static] |
struct passwd* runas_pw = NULL [static] |
Definition at line 111 of file os.c.
Referenced by mkdirpath(), ns_os_changeuser(), ns_os_inituserinfo(), and ns_os_openfile().
isc_boolean_t done_setuid = ISC_FALSE [static] |
int dfd[2] = { -1, -1 } [static] |