- if (fork()) return;
- if (config->scheduler_fifo)
- {
- int ret;
- struct sched_param params = {0};
- params.sched_priority = 0;
- if ((ret = sched_setscheduler(0, SCHED_OTHER, ¶ms)) == 0)
- {
- log(3, 0, 0, 0, "Dropped FIFO scheduler\n");
- }
- else
- {
- log(0, 0, 0, 0, "Error setting scheduler to OTHER: %s\n", strerror(errno));
- log(0, 0, 0, 0, "This is probably really really bad.\n");
- }
- }
-
- if (config->hostname && *config->hostname)
- cli_set_hostname(cli, config->hostname);
-
- signal(SIGPIPE, SIG_DFL);
- signal(SIGCHLD, SIG_DFL);
- signal(SIGHUP, SIG_DFL);
- signal(SIGUSR1, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGKILL, SIG_DFL);
- signal(SIGALRM, SIG_DFL);
- signal(SIGTERM, SIG_DFL);
-
- // Close sockets
- if (udpfd) close(udpfd); udpfd = 0;
- if (tunfd) close(tunfd); tunfd = 0;
- if (snoopfd) close(snoopfd); snoopfd = 0;
- for (i = 0; i < config->num_radfds; i++)
- if (radfds[i]) close(radfds[i]);
- if (ifrfd) close(ifrfd); ifrfd = 0;
- if (cluster_sockfd) close(cluster_sockfd); cluster_sockfd = 0;
- if (clifd) close(clifd); clifd = 0;
-#ifdef BGP
- for (i = 0; i < BGP_NUM_PEERS; i++)
- if (bgp_peers[i].sock != -1)
- close(bgp_peers[i].sock);
-#endif /* BGP */
-