Diff for /ansh/src/ansh3d.c between versions 1.1.1.1.2.3 and 1.4.4.1

version 1.1.1.1.2.3, 2011/10/14 09:04:04 version 1.4.4.1, 2013/01/18 09:31:47
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 52  intptr_t Kill; Line 52  intptr_t Kill;
 int Verbose;  int Verbose;
 u_int Crypted = 1;  u_int Crypted = 1;
 proc_head_t pH;  proc_head_t pH;
int bpfLEN, Timeout, Daemon = 1;int bpfLEN, Timeout = 300, Daemon = 1;
 char Key[STRSIZ];  char Key[STRSIZ];
   
   static struct tagProc *proc;
   static sched_root_task_t *root;
   
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
   
 static void  static void
Line 67  Usage() Line 70  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-t <timeout>\tTimeout of login if no activity (default is 300 sec)\n"
                 "\t-k <key>\tService cipher key\n"                  "\t-k <key>\tService cipher key\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"
Line 80  static void Line 83  static void
 sig(int s)  sig(int s)
 {  {
         int state;          int state;
           pid_t pid;
   
         switch (s) {          switch (s) {
                 case SIGHUP:                  case SIGHUP:
Line 94  sig(int s) Line 98  sig(int s)
                         break;                          break;
                 case SIGCHLD:                  case SIGCHLD:
                         VERB(1) LOG("Got SIGCHLD!\n");                          VERB(1) LOG("Got SIGCHLD!\n");
                        while (waitpid(-1, &state, WNOHANG) > 0);                        while ((pid = waitpid(-1, &state, WNOHANG)) > 0)
                                 stopProcess(root, &pH, pid, icmpTx);
                         break;                          break;
         }          }
 }  }
Line 116  hook_error(void *root, void *arg) Line 121  hook_error(void *root, void *arg)
 int  int
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
        struct sockaddr sa = { 0 };        sockaddr_t sa;
        struct sockaddr_in *sin4 = (struct sockaddr_in*) &sa; 
        struct sockaddr_in6 *sin6 = (struct sockaddr_in6*) &sa; 
         struct hostent *host;          struct hostent *host;
         struct passwd *pass;          struct passwd *pass;
         int fd, h = 0, uid = 0, gid = 0;          int fd, h = 0, uid = 0, gid = 0;
         long id = ANSH_ID;          long id = ANSH_ID;
         char ch, szUser[STRSIZ] = "root", szChroot[STRSIZ] = "/";          char ch, szUser[STRSIZ] = "root", szChroot[STRSIZ] = "/";
         struct sigaction sact;          struct sigaction sact;
         sched_root_task_t *root = NULL;  
         struct tagProc *proc;  
   
           memset(&sa, 0, sizeof sa);
         strlcpy(Key, DEFAULT_KEY, sizeof Key);          strlcpy(Key, DEFAULT_KEY, sizeof Key);
   
         while ((ch = getopt(argc, argv, "hvubt:a:i:U:C:k:")) != -1)          while ((ch = getopt(argc, argv, "hvubt:a:i:U:C:k:")) != -1)
Line 169  main(int argc, char **argv) Line 171  main(int argc, char **argv)
                                 }                                  }
                                 switch (host->h_addrtype) {                                  switch (host->h_addrtype) {
                                         case AF_INET:                                          case AF_INET:
                                                sin4->sin_len = sizeof(struct sockaddr_in);                                                sa.sin.sin_len = sizeof(struct sockaddr_in);
                                                sin4->sin_family = AF_INET;                                                sa.sin.sin_family = AF_INET;
                                                memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length);                                                memcpy(&sa.sin.sin_addr.s_addr, host->h_addr, host->h_length);
                                                 break;                                                  break;
                                         case AF_INET6:                                          case AF_INET6:
                                                sin6->sin6_len = sizeof(struct sockaddr_in6);                                                sa.sin6.sin6_len = sizeof(struct sockaddr_in6);
                                                sin6->sin6_family = AF_INET6;                                                sa.sin6.sin6_family = AF_INET6;
                                                memcpy(&sin6->sin6_addr.s6_addr, host->h_addr, host->h_length);                                                memcpy(&sa.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length);
                                                 break;                                                  break;
                                         default:                                          default:
                                                 printf("Error:: Unknown address type %d !!!\n", host->h_addrtype);                                                  printf("Error:: Unknown address type %d !!!\n", host->h_addrtype);
Line 201  main(int argc, char **argv) Line 203  main(int argc, char **argv)
         argv += optind;          argv += optind;
   
         /* sanity check for openned descriptor */          /* sanity check for openned descriptor */
        if (!sa.sa_family) {        if (!sa.sa.sa_family) {
                sin4->sin_len = sizeof(struct sockaddr_in);                sa.sin.sin_len = sizeof(struct sockaddr_in);
                sin4->sin_family = AF_INET;                sa.sin.sin_family = AF_INET;
         }          }
   
         /* catch signals */          /* catch signals */
Line 284  main(int argc, char **argv) Line 286  main(int argc, char **argv)
         setgid(gid);          setgid(gid);
         setuid(uid);          setuid(uid);
   
        if (schedRead(root, icmpRx, (void*) id, h)) {        if (schedRead(root, icmpRx, (void*) id, h, NULL, 0)) {
                 schedRun(root, &Kill);                  schedRun(root, &Kill);
         } else          } else
                 ERR("Failed to add reader task #%d - %s\n", sched_GetErrno(), sched_GetError());                  ERR("Failed to add reader task #%d - %s\n", sched_GetErrno(), sched_GetError());

Removed from v.1.1.1.1.2.3  
changed lines
  Added in v.1.4.4.1


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