Diff for /ansh/src/anshd.c between versions 1.1.1.1.2.1 and 1.1.1.1.2.2

version 1.1.1.1.2.1, 2011/10/07 13:41:26 version 1.1.1.1.2.2, 2011/10/10 09:11:48
Line 12 Line 12
   
   
 intptr_t Kill;  intptr_t Kill;
int bpfLEN, Verbose;int Verbose;
 u_int Crypted = 1;  u_int Crypted = 1;
 proc_head_t pH;  proc_head_t pH;
int Daemon = 1;int bpfLEN, Timeout, Daemon = 1;
   
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
   
Line 29  Usage() Line 29  Usage()
                 "\t-i <id>\tService ID (default is 42)\n"                  "\t-i <id>\tService ID (default is 42)\n"
                 "\t-U <user>\tRun service with other user\n"                  "\t-U <user>\tRun service with other user\n"
                 "\t-C <dir>\tRun service into chroot directory\n"                  "\t-C <dir>\tRun service into chroot directory\n"
                   "\t-t <timeout>\tTimeout of login if no activity (default is 0 sec)\n"
                 "\t-u\t\tSwitch to unencrypted traffic between hosts\n"                  "\t-u\t\tSwitch to unencrypted traffic between hosts\n"
                 "\t-b\t\tRun into batch mode (default is daemon mode)\n"                  "\t-b\t\tRun into batch mode (default is daemon mode)\n"
                 "\t-v\t\tVerbose (more -v, more verbosity ...)\n"                  "\t-v\t\tVerbose (more -v, more verbosity ...)\n"
Line 43  sig(int s) Line 44  sig(int s)
   
         switch (s) {          switch (s) {
                 case SIGHUP:                  case SIGHUP:
                        LOG("Got SIGHUP!\n");                        VERB(1) LOG("Got SIGHUP!\n");
                         break;                          break;
                 case SIGTERM:                  case SIGTERM:
                         LOG("Got SIGTERM!\n");  
                         Kill++;                          Kill++;
                           VERB(1) LOG("Got SIGTERM!\n");
                         break;                          break;
                 case SIGPIPE:                  case SIGPIPE:
                        LOG("Got SIGPIPE!\n");                        VERB(1) LOG("Got SIGPIPE!\n");
                         break;                          break;
                 case SIGCHLD:                  case SIGCHLD:
                           VERB(1) LOG("Got SIGCHLD!\n");
                         while (waitpid(-1, &state, WNOHANG) > 0);                          while (waitpid(-1, &state, WNOHANG) > 0);
                         break;                          break;
         }          }
 }  }
   
   static void *
   hook_error(void *root, void *arg)
   {
   /*      sched_root_task_t *r = root; */
   
           if (!root)
                   return (void*) -1;
   
           if (arg == (void*) EINTR)
                   return (void*) -1;
   
           return NULL;
   }
   
 int  int
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
Line 71  main(int argc, char **argv) Line 87  main(int argc, char **argv)
   
         Get1stEth(szDev, STRSIZ);          Get1stEth(szDev, STRSIZ);
   
        while ((ch = getopt(argc, argv, "hvulbd:U:C:")) != -1)        while ((ch = getopt(argc, argv, "hvubt:d:i:U:C:")) != -1)
                 switch (ch) {                  switch (ch) {
                         case 'U':                          case 'U':
                                 pass = getpwnam(optarg);                                  pass = getpwnam(optarg);
Line 95  main(int argc, char **argv) Line 111  main(int argc, char **argv)
                         case 'i':                          case 'i':
                                 id = strtol(optarg, NULL, 0);                                  id = strtol(optarg, NULL, 0);
                                 break;                                  break;
                           case 't':
                                   Timeout = abs(strtol(optarg, NULL, 0));
                                   break;
                         case 'd':                          case 'd':
                                 strlcpy(szDev, optarg, sizeof szDev);                                  strlcpy(szDev, optarg, sizeof szDev);
                                 break;                                  break;
Line 153  main(int argc, char **argv) Line 172  main(int argc, char **argv)
                 }                  }
         }          }
   
           if (ioCreatePIDFile(PIDFILE_ANSHD, 42)) {
                   ERR("Error:: already started anshd service ...\n");
                   closelog();
                   return 1;
           }
   
         h = PrepareL2(szDev, &bpfLEN);          h = PrepareL2(szDev, &bpfLEN);
         if (h == -1) {          if (h == -1) {
                 ERR("Error:: Descriptor not opened ... abort!\n");                  ERR("Error:: Descriptor not opened ... abort!\n");
                   unlink(PIDFILE_ANSHD);
                 closelog();                  closelog();
                 return 2;                  return 2;
         }          }
Line 164  main(int argc, char **argv) Line 190  main(int argc, char **argv)
         if (!(proc = InitProc(h, NULL, id, bpfLEN))) {          if (!(proc = InitProc(h, NULL, id, bpfLEN))) {
                 ERR("Error:: Not enough memory ...\n");                  ERR("Error:: Not enough memory ...\n");
                 close(h);                  close(h);
                   unlink(PIDFILE_ANSHD);
                 closelog();                  closelog();
                 return 3;                  return 3;
         }          }
Line 173  main(int argc, char **argv) Line 200  main(int argc, char **argv)
                 ERR("Scheduler not init #%d - %s\n", sched_GetErrno(), sched_GetError());                  ERR("Scheduler not init #%d - %s\n", sched_GetErrno(), sched_GetError());
                 DestroyProc(id);                  DestroyProc(id);
                 close(h);                  close(h);
                   unlink(PIDFILE_ANSHD);
                 closelog();                  closelog();
                 return 4;                  return 4;
        }        } else
                 root->root_hooks.hook_root.error = hook_error;
   
         chdir("/");          chdir("/");
         chroot(szChroot);          chroot(szChroot);
Line 192  main(int argc, char **argv) Line 221  main(int argc, char **argv)
         schedEnd(&root);          schedEnd(&root);
         DestroyProc(id);          DestroyProc(id);
         close(h);          close(h);
           unlink(PIDFILE_ANSHD);
         closelog();          closelog();
         return 0;          return 0;
 }  }

Removed from v.1.1.1.1.2.1  
changed lines
  Added in v.1.1.1.1.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>