Diff for /ansh/src/ansh3.c between versions 1.2.2.1 and 1.4.2.1

version 1.2.2.1, 2011/10/31 09:46:18 version 1.4.2.1, 2015/05/19 23:30:06
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 - 2015
         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 73  Usage() Line 73  Usage()
 int  int
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
        struct sockaddr sa = { 0 }, *ba = NULL;        sockaddr_t sa, ba;
        struct sockaddr_in *sin4; 
        struct sockaddr_in6 *sin6; 
         struct hostent *host;          struct hostent *host;
         char ch;          char ch;
         int h, len;          int h, len;
         u_short id = ANSH_ID;          u_short id = ANSH_ID;
   
           memset(&sa, 0, sizeof sa);
           memset(&ba, 0, sizeof ba);
   
         srandomdev();          srandomdev();
         do {          do {
                 Crypted = (u_int) random() % UINT_MAX;                  Crypted = (u_int) random() % UINT_MAX;
Line 99  main(int argc, char **argv) Line 100  main(int argc, char **argv)
                                 }                                  }
                                 switch (host->h_addrtype) {                                  switch (host->h_addrtype) {
                                         case AF_INET:                                          case AF_INET:
                                                ba = malloc(sizeof(struct sockaddr_in));                                                ba.sin.sin_len = sizeof(struct sockaddr_in);
                                                if (!ba) {                                                ba.sin.sin_family = AF_INET;
                                                        printf("Error:: malloc() #%d - %s ...\n",                                                 memcpy(&ba.sin.sin_addr.s_addr, host->h_addr, host->h_length);
                                                                        errno, strerror(errno)); 
                                                        return 1; 
                                                } else { 
                                                        memset(ba, 0, sizeof(struct sockaddr_in)); 
                                                        sin4 = (struct sockaddr_in*) ba; 
                                                } 
                                                sin4->sin_len = sizeof(struct sockaddr_in); 
                                                sin4->sin_family = AF_INET; 
                                                memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length); 
                                                 break;                                                  break;
                                         case AF_INET6:                                          case AF_INET6:
                                                ba = malloc(sizeof(struct sockaddr_in6));                                                ba.sin6.sin6_len = sizeof(struct sockaddr_in6);
                                                if (!ba) {                                                ba.sin6.sin6_family = AF_INET6;
                                                        printf("Error:: malloc() #%d - %s ...\n",                                                 memcpy(&ba.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length);
                                                                        errno, strerror(errno)); 
                                                        return 1; 
                                                } else { 
                                                        memset(ba, 0, sizeof(struct sockaddr_in6)); 
                                                        sin6 = (struct sockaddr_in6*) ba; 
                                                } 
                                                sin6->sin6_len = sizeof(struct sockaddr_in6); 
                                                sin6->sin6_family = AF_INET6; 
                                                memcpy(&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 155  main(int argc, char **argv) Line 138  main(int argc, char **argv)
         argv += optind;          argv += optind;
         if (!argc) {          if (!argc) {
                 printf("Error:: not specified address for connect ...\n");                  printf("Error:: not specified address for connect ...\n");
                 if (ba)  
                         free(ba);  
                 return 1;                  return 1;
         }          }
   
Line 164  main(int argc, char **argv) Line 145  main(int argc, char **argv)
         if (!host) {          if (!host) {
                 printf("Error:: in bind address '%s' #%d - %s\n",                  printf("Error:: in bind address '%s' #%d - %s\n",
                                 argv[0], h_errno, hstrerror(h_errno));                                  argv[0], h_errno, hstrerror(h_errno));
                 if (ba)  
                         free(ba);  
                 return 1;                  return 1;
         }          }
         switch (host->h_addrtype) {          switch (host->h_addrtype) {
                 case AF_INET:                  case AF_INET:
                        sin4 = (struct sockaddr_in*) &sa;                        sa.sin.sin_len = sizeof(struct sockaddr_in);
                        sin4->sin_len = sizeof(struct sockaddr_in);                        sa.sin.sin_family = AF_INET;
                        sin4->sin_family = AF_INET;                        memcpy(&sa.sin.sin_addr.s_addr, host->h_addr, host->h_length);
                        memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length); 
                         break;                          break;
                 case AF_INET6:                  case AF_INET6:
                        sin6 = (struct sockaddr_in6*) &sa;                        sa.sin6.sin6_len = sizeof(struct sockaddr_in6);
                        sin6->sin6_len = sizeof(struct sockaddr_in6);                        sa.sin6.sin6_family = AF_INET6;
                        sin6->sin6_family = AF_INET6;                        memcpy(&sa.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length);
                        memcpy(&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);
                         if (ba)  
                                 free(ba);  
                         return 1;                          return 1;
         }          }
   
        h = PrepareL3(ba, &len);        h = PrepareL3(&ba, &len);
         if (h == -1) {          if (h == -1) {
                 printf("Error:: Descriptor not opened ... \n");                  printf("Error:: Descriptor not opened ... \n");
                 if (ba)  
                         free(ba);  
                 return 1;                  return 1;
         }          }
   
Line 200  main(int argc, char **argv) Line 173  main(int argc, char **argv)
   
         VERB(1) printf("\r\nFinish client.\r\n");          VERB(1) printf("\r\nFinish client.\r\n");
         close(h);          close(h);
         if (ba)  
                 free(ba);  
         return 0;          return 0;
 }  }

Removed from v.1.2.2.1  
changed lines
  Added in v.1.4.2.1


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