home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / PPPBCKP / SRC / SRC15B42.ZIP / WATTSRC.ZIP / APPS / TCPINFO.C < prev    next >
Text File  |  1994-11-28  |  6KB  |  213 lines

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