LOG_DBG ((LOG_SYSDEP, 95, "monitor_init: pid %d my fd %d", m_state.pid,
LOG_DBG ((LOG_SYSDEP, 30, "monitor_init: pid %d my fd %d", m_state.pid,
monitor_init (void){  struct passwd *pw;  int p[2];  memset (&m_state, 0, sizeof m_state);  if (socketpair (AF_UNIX, SOCK_STREAM, PF_UNSPEC, p) != 0)    log_fatal ("monitor_init: socketpair() failed");  pw = getpwnam (ISAKMPD_PRIVSEP_USER);  if (pw == NULL)    log_fatal ("monitor_init: getpwnam(\"%s\") failed",	       ISAKMPD_PRIVSEP_USER);  m_state.pid = fork ();  m_state.s = p[m_state.pid ? 1 : 0];  strlcpy (m_state.root, pw->pw_dir, sizeof m_state.root);  LOG_DBG ((LOG_SYSDEP, 95, "monitor_init: pid %d my fd %d", m_state.pid,	    m_state.s));  /* The child process should drop privileges now.  */  if (!m_state.pid)    {      if (chroot (pw->pw_dir) != 0)	log_fatal ("monitor_init: chroot(\"%s\") failed", pw->pw_dir);      chdir ("/");      if (setgid (pw->pw_gid) != 0)	log_fatal ("monitor_init: setgid(%d) failed", pw->pw_gid);      if (setuid (pw->pw_uid) != 0)	log_fatal ("monitor_init: setuid(%d) failed", pw->pw_uid);      LOG_DBG ((LOG_MISC, 10,		"monitor_init: privileges dropped for child process"));    }  else    {      setproctitle ("monitor [priv]");    }  return m_state.pid;}