Diff for /ansh/src/ansh3d.c between versions 1.2 and 1.4

version 1.2, 2011/10/17 20:14:02 version 1.4, 2012/07/22 22:41:33
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 struct tagProc *proc;
Line 70  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 121  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 };        io_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;
Line 131  main(int argc, char **argv) Line 129  main(int argc, char **argv)
         char ch, szUser[STRSIZ] = "root", szChroot[STRSIZ] = "/";          char ch, szUser[STRSIZ] = "root", szChroot[STRSIZ] = "/";
         struct sigaction sact;          struct sigaction sact;
   
           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 172  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 204  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 287  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.2  
changed lines
  Added in v.1.4


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