home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
-
- TCPINFO - display configuration info to the screen
-
- Copyright (C) 1991, University of Waterloo
- portions Copyright (C) 1990, National Center for Supercomputer Applications
-
- This program is free software; you can redistribute it and/or modify
- it, but you may not sell it.
-
- This program is distributed in the hope that it will be useful,
- but without any warranty; without even the implied warranty of
- merchantability or fitness for a particular purpose.
-
- Erick Engelke or via E-Mail
- Faculty of Engineering
- University of Waterloo Erick@development.watstar.uwaterloo.ca
- 200 University Ave.,
- Waterloo, Ont., Canada
- N2L 3G1
-
- ******************************************************************************/
-
- #include <stdio.h>
- #include <stdarg.h>
- #include <string.h>
- #include <tcp.h>
-
- mprintf( char *format, ... )
- {
- static linecount = 1;
-
- char buffer[ 512 ];
- char *s, *p, pchar;
- va_list *argptr;
-
- va_start( argptr, format );
- vsprintf( s = buffer, format, argptr );
- va_end( argptr );
-
- do {
- if ( p = strchr( s, '\n' )) {
- pchar = *(++p);
- *p = 0;
- }
-
- fputs( s , stdout );
-
- if ( s = p ) {
- *s = pchar;
- if (++linecount == 24 ) {
- fputs( "<press any key to continue>", stdout);
- getch();
- fputs("\r\r", stdout);
- clreol();
- linecount = 1;
- }
- }
- } while ( s );
- }
-
-
- int unused = 0;
- int extrahelp = 0;
- static void (*other)();
- static void mine(char *name, char *value)
- {
- if ( !extrahelp ) {
- unused = 1;
- return;
- }
-
- if (!unused) {
- unused = 1;
- mprintf("\nSome extra parameters were found in your configuration file.");
- mprintf("These values may be extensions used by applications, but are");
- mprintf("not used by the Waterloo TCP kernal.\n");
- }
- mprintf(" unknown: %s = %s\n", name,value );
- }
-
- /* undocumented */
- extern byte _eth_addr[];
- extern word _pktdevclass;
- extern word _mss;
- extern longword _bootphost;
- extern word _bootptimeout;
- extern word _bootpon;
- extern word _arp_last_gateway;
- extern longword _arp_gate_data[];
- extern word _last_nameserver;
- extern word multihomes;
-
-
- char buffer[ 512 ], buf2[512];
-
-
- main( int argc, char **argv)
- {
- int i;
-
- while ( argc > 1 ) {
- if ( argc == 2 )
- if (!stricmp( argv[ 1 ], "ALL")) {
- extrahelp = 1;
- break;
- }
- mprintf("TCPINFO [ALL]");
- exit( 3 );
- }
-
- mprintf("Reading Waterloo TCP configuration file.\n");
-
- other = usr_init;
- usr_init = mine;
- _survivebootp = 1; /* needed to not exit if bootp fails */
-
- sock_init();
-
- if ( unused && extrahelp )
- mprintf("\nThat is the end of the extra parameters\n");
-
- switch ( _pktdevclass ) {
- case 1 : mprintf("\nEthernet Address : %hx:%hx:%hx:%hx:%hx:%hx\n",
- _eth_addr[0], _eth_addr[1], _eth_addr[2],
- _eth_addr[3], _eth_addr[4], _eth_addr[5] );
- break;
- case 6 : mprintf("Protocol : SLIP");
- break;
- }
-
-
- if (multihomes)
- mprintf("\nIP Addresses : %s - %s\n", inet_ntoa( buf2, gethostid()),
- inet_ntoa( buffer, gethostid()+multihomes));
- else
- mprintf("\nIP Address : %s\n", inet_ntoa( buffer, gethostid()));
- mprintf("Network Mask : %s\n\n", inet_ntoa( buffer, sin_mask ));
-
- mprintf("Gateways : ");
- if ( ! _arp_last_gateway ) mprintf("NONE");
- else mprintf("GATEWAY'S IP SUBNET SUBNET MASK\n");
-
- for ( i = 0 ; i < _arp_last_gateway * 3;) {
- printf(" : %-15s ", inet_ntoa(buffer,_arp_gate_data[i++] ));
- if ( !_arp_gate_data[i] ) {
- mprintf("DEFAULT\n\r");
- i += 2;
- } else {
- mprintf("%-15s ", inet_ntoa(buffer,_arp_gate_data[i++]));
- mprintf("%-15s\n", inet_ntoa(buffer,_arp_gate_data[i++]));
- }
- }
- mprintf("\n");
-
- if ( gethostname( NULL, 0 ) ) {
- mprintf("Host name : %s", gethostname(NULL, 0));
- if ( getdomainname( NULL, 0))
- mprintf(".%s", getdomainname( NULL, 0));
- mprintf("\n");
- }
-
- mprintf("Cookieserver%c : ", ( _last_cookie < 2 ) ? ' ' : 's');
- if ( !_last_cookie ) mprintf("NONE DEFINED\n");
-
- for ( i = 0 ; i < _last_cookie ; ++i ) {
- if (i) mprintf(" : ");
- mprintf("%s\n", inet_ntoa( buffer, _cookie[i] ));
- }
- mprintf("\n");
-
- mprintf("Nameserver%c : ", ( _last_nameserver < 2 ) ? ' ' : 's');
- if ( !_last_nameserver ) mprintf("NONE DEFINED\n\n");
-
- for ( i = 0 ; i < _last_nameserver ; ++i ) {
- if (i) mprintf(" : ");
- mprintf("%s\n", inet_ntoa( buffer, def_nameservers[i] ));
- }
- mprintf("Domain : \"%s\"\n\n", getdomainname( NULL, 0));
-
- if (_bootpon || extrahelp ) {
- mprintf("BOOTP : %s\n", (_bootpon) ? "USED": "NOT USED");
- if (_bootpon) mprintf(" : %s\n", gethostid() ?
- "SUCCEEDED" : "FAILED" );
-
- mprintf("BOOTP Server : %s\n", ( _bootphost == 0xffffffffL ) ?
- "BROADCAST" :
- inet_ntoa( buffer, _bootphost ));
- mprintf("BOOTP Timeout : %i seconds\n\n", _bootptimeout );
- }
-
- if (extrahelp) {
- mprintf("Default Timeout : %u seconds\n", sock_delay );
- mprintf("Max Seg Size MSS : %u bytes\n\n", _mss );
- debugpsocketlen();
- }
-
- if ( unused && !extrahelp ) {
- mprintf("\nAdditional non-standard parameters were found in your configuration file\n");
- mprintf("If you would like to see them, try the command:\n");
- mprintf(" TCPINFO ALL\n");
- } else if ( !extrahelp ) {
- mprintf("\nAdditional but more obscure information can be found using the command:\n");
- mprintf(" TCPINFO ALL\n");
- }
- exit( 0 );
- }
-