1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#include <unistd.h>
#include "files.h"
#include "log.h"
#include "maps.h"
#include "net.h"
#include "params.h"
#include "random.h"
#include "shm.h"
#include "trinity.h"
static void do_sso_sockets(void)
{
struct sockopt so = { 0, 0, 0, 0 };
unsigned int i;
int fd;
for (i = 0; i < nr_sockets; i++) {
fd = shm->sockets[i].fd;
sso_socket(&shm->sockets[i].triplet, &so, fd);
}
}
void regenerate(void)
{
if (no_files == TRUE) /* We don't regenerate sockets */
return;
/* we're about to exit. */
if (shm->spawn_no_more)
return;
shm->regenerating = TRUE;
sleep(1); /* give children time to finish with fds. */
shm->regenerate = 0;
output(0, "Regenerating random pages, fd's etc.\n");
regenerate_fds();
/* Do random setsockopts on all network sockets. */
do_sso_sockets();
destroy_global_mappings();
setup_global_mappings();
generate_random_page(page_rand);
shm->regenerating = FALSE;
}
|