[BACK]Return to main.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / telnet

Diff for /src/usr.bin/telnet/main.c between version 1.22 and 1.23

version 1.22, 2013/10/26 21:33:29 version 1.23, 2014/07/19 23:50:38
Line 37 
Line 37 
 #define OPTS_FORWARD_CREDS      0x00000002  #define OPTS_FORWARD_CREDS      0x00000002
 #define OPTS_FORWARDABLE_CREDS  0x00000001  #define OPTS_FORWARDABLE_CREDS  0x00000001
   
 #ifdef KRB5  
 #define FORWARD  
 /* XXX ugly hack to setup dns-proxy stuff */  
 #define Authenticator asn1_Authenticator  
 #include <kerberosV/krb5.h>  
 #endif  
   
 #ifdef KRB4  
 #include <kerberosIV/krb.h>  
 #endif  
   
 #ifdef FORWARD  
 int forward_flags;  
 static int default_forward=0;  
 #endif  
   
 int family = AF_UNSPEC;  int family = AF_UNSPEC;
 int rtableid = -1;  int rtableid = -1;
   
Line 69 
Line 53 
     init_telnet();      init_telnet();
   
     init_sys();      init_sys();
   
 #if defined(TN3270)  
     init_3270();  
 #endif  
 }  }
   
         void          void
Line 81 
Line 61 
         extern char *__progname;          extern char *__progname;
   
         (void)fprintf(stderr,          (void)fprintf(stderr,
 #if defined(TN3270)              "usage: %s [-4678acDdEKLr] [-b hostalias] [-e escapechar] "
             "usage: %s [-d] [-n filename] [-t commandname] [sysname [port]]\n",              "[-l user]\n"
 # else              "\t[-n tracefile] [-V rtable] [host [port]]\n",
             "usage: %s [-468acdEFfKLrx] [-b hostalias] [-e escapechar] "  
             "[-k realm]\n"  
             "\t[-l user] [-n tracefile] [-V rtable] [-X authtype] "  
             "[host [port]]\n",  
 #endif  
             __progname);              __progname);
   
         exit(1);          exit(1);
 }  }
   
   
 #ifdef KRB5  
 static void  
 krb5_init(void)  
 {  
     krb5_context context;  
     krb5_error_code ret;  
   
     ret = krb5_init_context(&context);  
     if (ret)  
         return;  
   
 #if defined(AUTHENTICATION) && defined(KRB5) && defined(FORWARD)  
     if (krb5_config_get_bool (context, NULL,  
          "libdefaults", "forward", NULL)) {  
            forward_flags |= OPTS_FORWARD_CREDS;  
            default_forward=1;  
     }  
     if (krb5_config_get_bool (context, NULL,  
          "libdefaults", "forwardable", NULL)) {  
            forward_flags |= OPTS_FORWARDABLE_CREDS;  
            default_forward=1;  
     }  
 #endif  
 #ifdef  ENCRYPTION  
     if (krb5_config_get_bool (context, NULL,  
         "libdefaults", "encrypt", NULL)) {  
           encrypt_auto(1);  
           decrypt_auto(1);  
           wantencryption = 1;  
           EncryptVerbose(1);  
         }  
 #endif  
   
     krb5_free_context(context);  
 }  
 #endif  
   
 /*  /*
  * main.  Parse arguments, invoke the protocol or command parser.   * main.  Parse arguments, invoke the protocol or command parser.
  */   */
Line 146 
Line 83 
         int ch;          int ch;
         char *user, *alias;          char *user, *alias;
         const char *errstr;          const char *errstr;
 #ifdef  FORWARD  
         extern int forward_flags;  
 #endif  /* FORWARD */  
   
 #ifdef KRB5  
         krb5_init();  
 #endif  
   
         tninit();               /* Clear out things */          tninit();               /* Clear out things */
   
         TerminalSaveState();          TerminalSaveState();
Line 167 
Line 97 
   
         rlogin = (strncmp(prompt, "rlog", 4) == 0) ? '~' : _POSIX_VDISABLE;          rlogin = (strncmp(prompt, "rlog", 4) == 0) ? '~' : _POSIX_VDISABLE;
   
         /*  
          * if AUTHENTICATION and ENCRYPTION is set autologin will be  
          * set to true after the getopt switch; unless the -K option is  
          * passed  
          */  
         autologin = -1;          autologin = -1;
   
         while ((ch = getopt(argc, argv, "4678DEKLS:X:ab:cde:fFk:l:n:rt:V:x"))          while ((ch = getopt(argc, argv, "4678ab:cDdEe:KLl:n:rV:"))
             != -1) {              != -1) {
                 switch(ch) {                  switch(ch) {
                 case '4':                  case '4':
Line 183 
Line 108 
                 case '6':                  case '6':
                         family = AF_INET6;                          family = AF_INET6;
                         break;                          break;
                   case '7':
                           eight = 0;
                           break;
                 case '8':                  case '8':
                         eight = 3;      /* binary output and input */                          eight = 3;      /* binary output and input */
                         break;                          break;
                 case '7':                  case 'a':
                         eight = 0;                          autologin = 1;
                         break;                          break;
                   case 'b':
                           alias = optarg;
                           break;
                   case 'c':
                           skiprc = 1;
                           break;
                 case 'D': {                  case 'D': {
                         /* sometimes we don't want a mangled display */                          /* sometimes we don't want a mangled display */
                         char *p;                          char *p;
Line 196 
Line 130 
                                 env_define("DISPLAY", (unsigned char*)p);                                  env_define("DISPLAY", (unsigned char*)p);
                         break;                          break;
                 }                  }
                   case 'd':
                           debug = 1;
                           break;
                 case 'E':                  case 'E':
                         rlogin = escape = _POSIX_VDISABLE;                          rlogin = escape = _POSIX_VDISABLE;
                         break;                          break;
                   case 'e':
                           set_escape_char(optarg);
                           break;
                 case 'K':                  case 'K':
 #ifdef  AUTHENTICATION  
                         autologin = 0;                          autologin = 0;
 #endif  
                         break;                          break;
                 case 'L':                  case 'L':
                         eight |= 2;     /* binary output only */                          eight |= 2;     /* binary output only */
                         break;                          break;
                 case 'S':  
                     {  
 #ifdef  HAS_GETTOS  
                         extern int tos;  
   
                         if ((tos = parsetos(optarg, "tcp")) < 0)  
                                 fprintf(stderr, "%s%s%s%s\n",  
                                         prompt, ": Bad TOS argument '",  
                                         optarg,  
                                         "; will try to use default TOS");  
 #else  
                         fprintf(stderr,  
                            "%s: Warning: -S ignored, no parsetos() support.\n",  
                                                                 prompt);  
 #endif  
                     }  
                         break;  
                 case 'X':  
 #ifdef  AUTHENTICATION  
                         auth_disable_name(optarg);  
 #endif  
                         break;  
                 case 'a':  
                         autologin = 1;  
                         break;  
                 case 'c':  
                         skiprc = 1;  
                         break;  
                 case 'd':  
                         debug = 1;  
                         break;  
                 case 'e':  
                         set_escape_char(optarg);  
                         break;  
                 case 'f':  
 #if defined(AUTHENTICATION) && defined(KRB5) && defined(FORWARD)  
                         if ((forward_flags & OPTS_FORWARD_CREDS) &&  
                             !default_forward) {  
                             fprintf(stderr,  
                                     "%s: Only one of -f and -F allowed.\n",  
                                     prompt);  
                             usage();  
                         }  
                         forward_flags |= OPTS_FORWARD_CREDS;  
 #else  
                         fprintf(stderr,  
                          "%s: Warning: -f ignored, no Kerberos V5 support.\n",  
                                 prompt);  
 #endif  
                         break;  
                 case 'F':  
 #if defined(AUTHENTICATION) && defined(KRB5) && defined(FORWARD)  
                         if ((forward_flags & OPTS_FORWARD_CREDS) &&  
                             !default_forward) {  
                             fprintf(stderr,  
                                     "%s: Only one of -f and -F allowed.\n",  
                                     prompt);  
                             usage();  
                         }  
                         forward_flags |= OPTS_FORWARD_CREDS;  
                         forward_flags |= OPTS_FORWARDABLE_CREDS;  
 #else  
                         fprintf(stderr,  
                          "%s: Warning: -F ignored, no Kerberos V5 support.\n",  
                                 prompt);  
 #endif  
                         break;  
                 case 'k':  
 #if defined(AUTHENTICATION) && defined(KRB4)  
                     {  
                         extern char *dest_realm, dst_realm_buf[];  
                         extern int dst_realm_sz;  
                         dest_realm = dst_realm_buf;  
                         (void)strncpy(dest_realm, optarg, dst_realm_sz);  
                     }  
 #else  
                         fprintf(stderr,  
                            "%s: Warning: -k ignored, no Kerberos V4 support.\n",  
                                                                 prompt);  
 #endif  
                         break;  
                 case 'l':                  case 'l':
                         autologin = -1;                          autologin = -1;
                         user = optarg;                          user = optarg;
                         break;                          break;
                 case 'b':  
                         alias = optarg;  
                         break;  
                 case 'n':                  case 'n':
 #if defined(TN3270) && defined(unix)                          SetNetTrace(optarg);
                         /* distinguish between "-n oasynch" and "-noasynch" */  
                         if (argv[optind - 1][0] == '-' && argv[optind - 1][1]  
                             == 'n' && argv[optind - 1][2] == 'o') {  
                                 if (!strcmp(optarg, "oasynch")) {  
                                         noasynchtty = 1;  
                                         noasynchnet = 1;  
                                 } else if (!strcmp(optarg, "oasynchtty"))  
                                         noasynchtty = 1;  
                                 else if (!strcmp(optarg, "oasynchnet"))  
                                         noasynchnet = 1;  
                         } else  
 #endif  /* defined(TN3270) && defined(unix) */  
                                 SetNetTrace(optarg);  
                         break;                          break;
                 case 'r':                  case 'r':
                         rlogin = '~';                          rlogin = '~';
                         break;                          break;
                 case 't':  
 #if defined(TN3270) && defined(unix)  
                         (void)strlcpy(tline, optarg, sizeof tline);  
                         transcom = tline;  
 #else  
                         fprintf(stderr,  
                            "%s: Warning: -t ignored, no TN3270 support.\n",  
                                                                 prompt);  
 #endif  
                         break;  
                 case 'V':                  case 'V':
                         rtableid = (int)strtonum(optarg, 0,                          rtableid = (int)strtonum(optarg, 0,
                             RT_TABLEID_MAX, &errstr);                              RT_TABLEID_MAX, &errstr);
Line 334 
Line 164 
                                     prompt, errstr, optarg);                                      prompt, errstr, optarg);
                         }                          }
                         break;                          break;
                 case 'x':  
 #ifdef ENCRYPTION  
                         encrypt_auto(1);  
                         decrypt_auto(1);  
                         wantencryption = 1;  
                         EncryptVerbose(1);  
 #else  
                         fprintf(stderr,  
                             "%s: Warning: -x ignored, no ENCRYPT support.\n",  
                                                                 prompt);  
 #endif  
                         break;  
                 case '?':                  case '?':
                 default:                  default:
                         usage();                          usage();
Line 353 
Line 171 
                 }                  }
         }          }
   
         if (autologin == -1) {  
 #if defined(AUTHENTICATION)  
                 if(check_krb4_tickets() || check_krb5_tickets())  
                         autologin = 1;  
 #endif  
 #if defined(ENCRYPTION)  
                 encrypt_auto(1);  
                 decrypt_auto(1);  
 #endif  
         }  
   
         if (autologin == -1)          if (autologin == -1)
                 autologin = (rlogin == _POSIX_VDISABLE) ? 0 : 1;                  autologin = (rlogin == _POSIX_VDISABLE) ? 0 : 1;
   
Line 398 
Line 205 
         }          }
         (void)setjmp(toplevel);          (void)setjmp(toplevel);
         for (;;) {          for (;;) {
 #ifdef TN3270                  command(1, 0, 0);
                 if (shell_active)  
                         shell_continue();  
                 else  
 #endif  
                         command(1, 0, 0);  
         }          }
         return 0;          return 0;
 }  }

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23