TCPINFO.C
上传用户:better800
上传日期:2022-06-13
资源大小:1853k
文件大小:6k
源码类别:

TCP/IP协议栈

开发平台:

DOS

  1. /******************************************************************************
  2.     TCPINFO - display configuration info to the screen
  3.     Copyright (C) 1991 Erick Engelke
  4.     portions Copyright (C) 1990, National Center for Supercomputer Applications
  5.     This program is free software; you can redistribute it and/or modify
  6.     it, but you may not sell it.
  7.     This program is distributed in the hope that it will be useful,
  8.     but without any warranty; without even the implied warranty of
  9.     merchantability or fitness for a particular purpose.
  10.         Erick Engelke                   or via E-Mail
  11.         Faculty of Engineering
  12.         University of Waterloo          Erick@development.watstar.uwaterloo.ca
  13.         200 University Ave.,
  14.         Waterloo, Ont., Canada
  15.         N2L 3G1
  16. ******************************************************************************/
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <stdarg.h>
  20. #include <string.h>
  21. #include <conio.h>
  22. #include <tcp.h>
  23. void mprintf( char *format, ... )
  24. {
  25.     static linecount = 1;
  26.     char buffer[ 512 ];
  27.     char *s, *p, pchar;
  28.     va_list *argptr;
  29.     va_start( argptr, format );
  30.     vsprintf( s = buffer, format, argptr );
  31.     va_end( argptr );
  32.     do {
  33. if ( (p = strchr( s, 'n' )) != NULL ) {
  34.     pchar = *(++p);
  35.     *p = 0;
  36. }
  37. fputs( s , stdout );
  38. if ( (s = p) != NULL ) {
  39.     *s = pchar;
  40.     if (++linecount == 24 ) {
  41. fputs( "<press any key to continue>", stdout);
  42. getch();
  43.         fputs("rr", stdout);
  44.         clreol();
  45. linecount = 1;
  46.     }
  47. }
  48.     } while ( s );
  49. }
  50. int unused = 0;
  51. int extrahelp = 0;
  52. static void (*other)( char *name, char *value );
  53. static void mine(char *name, char *value)
  54. {
  55.     if ( !extrahelp ) {
  56. unused = 1;
  57. return;
  58.     }
  59.     if (!unused) {
  60. unused = 1;
  61. mprintf("nSome extra parameters were found in your configuration file.");
  62. mprintf("These values may be extensions used by applications, but are");
  63. mprintf("not used by the Waterloo TCP kernal.n");
  64.     }
  65.     mprintf("   unknown: %s = %sn", name,value );
  66. }
  67. /* undocumented */
  68. extern byte _eth_addr[];
  69. extern word _pktdevclass;
  70. extern word _mss;
  71. extern longword _bootphost;
  72. extern word _bootptimeout;
  73. extern word _bootpon;
  74. extern word _arp_last_gateway;
  75. extern longword _arp_gate_data[];
  76. extern int _last_nameserver;
  77. extern word multihomes;
  78. char buffer[ 512 ], buf2[512];
  79. int main( int argc, char **argv)
  80. {
  81.     int i;
  82.     while ( argc > 1 ) {
  83. if ( argc == 2 )
  84.     if (!stricmp( argv[ 1 ], "ALL")) {
  85. extrahelp = 1;
  86. break;
  87.     }
  88. mprintf("TCPINFO [ALL]");
  89. exit( 3 );
  90.     }
  91.     mprintf("Reading Waterloo TCP configuration file.n");
  92.     other = usr_init;
  93.     usr_init = mine;
  94.     _survivebootp = 1; /* needed to not exit if bootp fails */
  95.     sock_init();
  96.     if ( unused && extrahelp )
  97. mprintf("nThat is the end of the extra parametersn");
  98.     switch ( _pktdevclass ) {
  99. case 1 : mprintf("nEthernet Address : %hx:%hx:%hx:%hx:%hx:%hxn",
  100.      _eth_addr[0], _eth_addr[1], _eth_addr[2],
  101.      _eth_addr[3], _eth_addr[4], _eth_addr[5] );
  102.  break;
  103. case 6 : mprintf("Protocol         : SLIP");
  104.  break;
  105.     }
  106.     if (multihomes)
  107.         mprintf("nIP Addresses     : %s - %sn", inet_ntoa( buf2, gethostid()),
  108.             inet_ntoa( buffer, gethostid()+multihomes));
  109.     else
  110.         mprintf("nIP Address       : %sn", inet_ntoa( buffer, gethostid()));
  111.     mprintf("Network Mask     : %snn", inet_ntoa( buffer, sin_mask ));
  112.     mprintf("Gateways         : ");
  113.     if ( ! _arp_last_gateway ) mprintf("NONE");
  114.     else mprintf("GATEWAY'S IP     SUBNET           SUBNET MASKn");
  115.     for ( i = 0 ; i < _arp_last_gateway * 3;) {
  116. printf("                 : %-15s  ", inet_ntoa(buffer,_arp_gate_data[i++] ));
  117. if ( !_arp_gate_data[i] ) {
  118.     mprintf("DEFAULTnr");
  119.     i += 2;
  120. } else {
  121.     mprintf("%-15s  ", inet_ntoa(buffer,_arp_gate_data[i++]));
  122.     mprintf("%-15sn", inet_ntoa(buffer,_arp_gate_data[i++]));
  123. }
  124.     }
  125.     mprintf("n");
  126.     if ( gethostname( NULL, 0 ) ) {
  127. mprintf("Host name        : %s", gethostname(NULL, 0));
  128. if ( getdomainname( NULL, 0))
  129.     mprintf(".%s", getdomainname( NULL, 0));
  130. mprintf("n");
  131.     }
  132.     mprintf("Cookieserver%c    : ", ( _last_cookie < 2 ) ? ' ' : 's');
  133.     if ( !_last_cookie ) mprintf("NONE DEFINEDn");
  134.     for ( i = 0 ; i < _last_cookie ; ++i ) {
  135. if (i) mprintf("                 : ");
  136. mprintf("%sn", inet_ntoa( buffer, _cookie[i] ));
  137.     }
  138.     mprintf("n");
  139.     mprintf("Nameserver%c      : ", ( _last_nameserver < 2 ) ? ' ' : 's');
  140.     if ( !_last_nameserver ) mprintf("NONE DEFINEDnn");
  141.     for ( i = 0 ; i < _last_nameserver ; ++i ) {
  142. if (i) mprintf("                 : ");
  143. mprintf("%sn", inet_ntoa( buffer, def_nameservers[i] ));
  144.     }
  145.     mprintf("Domain           : "%s"nn", getdomainname( NULL, 0));
  146.     if (_bootpon || extrahelp ) {
  147. mprintf("BOOTP            : %sn", (_bootpon) ? "USED": "NOT USED");
  148. if (_bootpon) mprintf("                 : %sn", gethostid() ?
  149. "SUCCEEDED" : "FAILED" );
  150. mprintf("BOOTP Server     : %sn", ( _bootphost == 0xffffffffL ) ?
  151. "BROADCAST" :
  152. inet_ntoa( buffer, _bootphost ));
  153. mprintf("BOOTP Timeout    : %i secondsnn", _bootptimeout );
  154.     }
  155.     if (extrahelp) {
  156. mprintf("Default Timeout  : %u secondsn", sock_delay );
  157.     mprintf("Max Seg Size MSS : %u bytesnn", _mss );
  158.     debugpsocketlen();
  159.     }
  160.     if ( unused && !extrahelp ) {
  161.         mprintf("nAdditional non-standard parameters were found in your configuration filen");
  162.         mprintf("If you would like to see them, try the command:n");
  163.         mprintf("    TCPINFO ALLn");
  164.     } else if ( !extrahelp ) {
  165.         mprintf("nAdditional but more obscure information can be found using the command:n");
  166.         mprintf("    TCPINFO ALLn");
  167.     }
  168.     exit( 0 );
  169.     return (0);  /* not reached */
  170. }