- return ret;
-}
-
-static uint32_t afs_socket_cookie;
-static int para_random(unsigned max)
-{
- return ((max + 0.0) * (rand() / (RAND_MAX + 1.0)));
-}
-
-int setup(void)
-{
- int ret, afs_server_socket[2];
-
- para_init_random_seed();
- ret = socketpair(PF_UNIX, SOCK_DGRAM, 0, afs_server_socket);
- if (ret < 0)
- exit(EXIT_FAILURE);
- afs_socket_cookie = para_random((uint32_t)-1);
- ret = fork();
- if (ret < 0)
- exit(EXIT_FAILURE);
- if (!ret) { /* child (afs) */
- char *socket_name = "/tmp/afs_command_socket";
- struct sockaddr_un unix_addr;
- int fd;
-
- unlink(socket_name);
- ret = create_local_socket(socket_name, &unix_addr,
- S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IWOTH);
- if (ret < 0)
- exit(EXIT_FAILURE);
- fd = ret;
- if (listen(fd , 5) < 0) {
- PARA_EMERG_LOG("%s", "can not listen on socket\n");
- exit(EXIT_FAILURE);
- }
- ret = afs_init();
- if (ret < 0)
- exit(EXIT_FAILURE);
- PARA_NOTICE_LOG("accepting\n");
- ret = para_accept(fd, &unix_addr, sizeof(struct sockaddr_un));
- return ret;
- }
- ret = fork();
- if (ret < 0)
- exit(EXIT_FAILURE);
- if (!ret) { /* child (handler) */
- PARA_NOTICE_LOG("reading stdin\n");
- for (;;) {
- char buf[255];
- read(0, buf, 255);
- PARA_NOTICE_LOG("read: %s\n", buf);
- }
-
- }
- for (;;) {
- sleep(10);
- PARA_NOTICE_LOG("sending next requerst\n");
- }