|
|
/*++
Copyright (c) 1998-2001 Microsoft Corporation
Module Name:
tdiutil.c
Abstract:
Utility functions for dumping various TDI structures.
Author:
Keith Moore (keithmo) 17-Jun-1998
Environment:
User Mode.
Revision History:
--*/
#include "precomp.h"
//
// Private prototypes.
//
PSTR TransportAddressTypeToString( USHORT AddressType );
PSTR NetbiosNameTypeToString( USHORT NetbiosNameType );
//
// Public functions.
//
VOID DumpTransportAddress( PCHAR Prefix, PTRANSPORT_ADDRESS Address, ULONG_PTR ActualAddress )
/*++
Routine Description:
Dumps the specified TRANSPORT_ADDRESS structure.
Arguments:
Prefix - A character string prefix to display before each line. Used to make things pretty.
Address - Points to the TRANSPORT_ADDRESS to dump.
ActualAddress - The actual address where the structure resides on the debugee.
Return Value:
None.
--*/
{
dprintf( "%sTRANSPORT_ADDRESS @ %p\n", Prefix, ActualAddress );
dprintf( "%s AddressLength = %u\n", Prefix, Address->Address[0].AddressLength );
dprintf( "%s AddressType = %u (%s)\n", Prefix, Address->Address[0].AddressType, TransportAddressTypeToString( Address->Address[0].AddressType ) );
switch( Address->Address[0].AddressType ) {
case TDI_ADDRESS_TYPE_IP : {
PTA_IP_ADDRESS ipAddress;
ipAddress = (PTA_IP_ADDRESS)Address;
dprintf( "%s sin_port = %u\n", Prefix, NTOHS(ipAddress->Address00.sin_port) );
dprintf( "%s in_addr = %d.%d.%d.%d\n", Prefix, UC(ipAddress->Address00.in_addr >> 0), UC(ipAddress->Address00.in_addr >> 8), UC(ipAddress->Address00.in_addr >> 16), UC(ipAddress->Address00.in_addr >> 24) );
} break;
case TDI_ADDRESS_TYPE_IPX : {
PTA_IPX_ADDRESS ipxAddress;
ipxAddress = (PTA_IPX_ADDRESS)Address;
dprintf( "%s NetworkAddress = %08lx\n", Prefix, ipxAddress->Address00.NetworkAddress );
dprintf( "%s NodeAddress = %02X-%02X-%02X-%02X-%02X-%02X\n", Prefix, ipxAddress->Address00.NodeAddress[0], ipxAddress->Address00.NodeAddress[1], ipxAddress->Address00.NodeAddress[2], ipxAddress->Address00.NodeAddress[3], ipxAddress->Address00.NodeAddress[4], ipxAddress->Address00.NodeAddress[5] );
dprintf( "%s Socket = %04X\n", Prefix, ipxAddress->Address00.Socket );
} break;
case TDI_ADDRESS_TYPE_NETBIOS : {
PTA_NETBIOS_ADDRESS netbiosAddress; UCHAR netbiosName[17];
netbiosAddress = (PTA_NETBIOS_ADDRESS)Address;
dprintf( "%s NetbiosNameType = %04X (%s)\n", Prefix, netbiosAddress->Address00.NetbiosNameType, NetbiosNameTypeToString( netbiosAddress->Address00.NetbiosNameType ) );
RtlCopyMemory( netbiosName, netbiosAddress->Address00.NetbiosName, 16 );
netbiosName[16] = '\0';
dprintf( "%s NetbiosName = %s\n", Prefix, netbiosName );
} break;
default :
dprintf( "%s Unsupported address type\n", Prefix );
break;
}
} // DumpAfdEndpoint
//
// Private functions.
//
PSTR TransportAddressTypeToString( USHORT AddressType )
/*++
Routine Description:
Maps a transport address type to a displayable string.
Arguments:
AddressType - The transport address type to map.
Return Value:
PSTR - Points to the displayable form of the tranport address type.
--*/
{
switch( AddressType ) {
case TDI_ADDRESS_TYPE_UNSPEC :
return "Unspecified";
case TDI_ADDRESS_TYPE_UNIX :
return "Unix";
case TDI_ADDRESS_TYPE_IP :
return "Ip";
case TDI_ADDRESS_TYPE_IMPLINK :
return "Implink";
case TDI_ADDRESS_TYPE_PUP :
return "Pup";
case TDI_ADDRESS_TYPE_CHAOS :
return "Chaos";
case TDI_ADDRESS_TYPE_IPX :
return "Ipx";
case TDI_ADDRESS_TYPE_NBS :
return "Nbs";
case TDI_ADDRESS_TYPE_ECMA :
return "Ecma";
case TDI_ADDRESS_TYPE_DATAKIT :
return "Datakit";
case TDI_ADDRESS_TYPE_CCITT :
return "Ccitt";
case TDI_ADDRESS_TYPE_SNA :
return "Sna";
case TDI_ADDRESS_TYPE_DECnet :
return "Decnet";
case TDI_ADDRESS_TYPE_DLI :
return "Dli";
case TDI_ADDRESS_TYPE_LAT :
return "Lat";
case TDI_ADDRESS_TYPE_HYLINK :
return "Hylink";
case TDI_ADDRESS_TYPE_APPLETALK :
return "Appletalk";
case TDI_ADDRESS_TYPE_NETBIOS :
return "Netbios";
case TDI_ADDRESS_TYPE_8022 :
return "8022";
case TDI_ADDRESS_TYPE_OSI_TSAP :
return "Osi Trap";
case TDI_ADDRESS_TYPE_NETONE :
return "Netone";
}
return "UNKNOWN";
} // TransportAddressTypeToString
PSTR NetbiosNameTypeToString( USHORT NetbiosNameType )
/*++
Routine Description:
Maps a NetBIOS name type to a displayable string.
Arguments:
NetbiosNameType - The NetBIOS name type to map.
Return Value:
PSTR - Points to the displayable form of the NetBIOS name type.
--*/
{
switch( NetbiosNameType ) {
case TDI_ADDRESS_NETBIOS_TYPE_UNIQUE :
return "Unique";
case TDI_ADDRESS_NETBIOS_TYPE_GROUP :
return "Group";
case TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE :
return "Quick Unique";
case TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP :
return "Quick Group";
}
return "UNKNOWN";
} // NetbiosNameTypeToString
|