mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
Added simple dword OID query to lan.
Correct oper status, admin status and type settings in iinfo. Small fixes in lan.c for adapter name. svn path=/trunk/; revision=14173
This commit is contained in:
parent
59c145b801
commit
604f4f13c1
6 changed files with 65 additions and 5 deletions
|
@ -209,3 +209,28 @@ PIP_INTERFACE FindOnLinkInterface(PIP_ADDRESS Address)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NTSTATUS GetInterfaceConnectionStatus
|
||||||
|
( PIP_INTERFACE Interface, PDWORD Result ) {
|
||||||
|
NTSTATUS Status = TcpipLanGetDwordOid
|
||||||
|
( Interface, OID_GEN_HARDWARE_STATUS, Result );
|
||||||
|
if( NT_SUCCESS(Status) ) switch( *Result ) {
|
||||||
|
case NdisHardwareStatusReady:
|
||||||
|
*Result = MIB_IF_OPER_STATUS_OPERATIONAL;
|
||||||
|
break;
|
||||||
|
case NdisHardwareStatusInitializing:
|
||||||
|
*Result = MIB_IF_OPER_STATUS_CONNECTING;
|
||||||
|
break;
|
||||||
|
case NdisHardwareStatusReset:
|
||||||
|
*Result = MIB_IF_OPER_STATUS_DISCONNECTED;
|
||||||
|
break;
|
||||||
|
case NdisHardwareStatusNotReady:
|
||||||
|
*Result = MIB_IF_OPER_STATUS_DISCONNECTED;
|
||||||
|
break;
|
||||||
|
case NdisHardwareStatusClosing:
|
||||||
|
default:
|
||||||
|
*Result = MIB_IF_OPER_STATUS_NON_OPERATIONAL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
|
@ -165,6 +165,28 @@ VOID FreeAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS TcpipLanGetDwordOid
|
||||||
|
( PIP_INTERFACE Interface,
|
||||||
|
NDIS_OID Oid,
|
||||||
|
PDWORD Result ) {
|
||||||
|
/* Get maximum frame size */
|
||||||
|
if( Interface->Context ) {
|
||||||
|
return NDISCall((PLAN_ADAPTER)Interface->Context,
|
||||||
|
NdisRequestQueryInformation,
|
||||||
|
Oid,
|
||||||
|
Result,
|
||||||
|
sizeof(DWORD));
|
||||||
|
} else switch( Oid ) { /* Loopback Case */
|
||||||
|
case OID_GEN_HARDWARE_STATUS:
|
||||||
|
*Result = NdisHardwareStatusReady;
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID STDCALL ProtocolOpenAdapterComplete(
|
VOID STDCALL ProtocolOpenAdapterComplete(
|
||||||
NDIS_HANDLE BindingContext,
|
NDIS_HANDLE BindingContext,
|
||||||
NDIS_STATUS Status,
|
NDIS_STATUS Status,
|
||||||
|
@ -916,11 +938,10 @@ VOID BindAdapter(
|
||||||
TI_DbgPrint(MID_TRACE,("BCAST(IF) %s\n", A2S(&IF->Broadcast)));
|
TI_DbgPrint(MID_TRACE,("BCAST(IF) %s\n", A2S(&IF->Broadcast)));
|
||||||
|
|
||||||
if(NT_SUCCESS(Status)) {
|
if(NT_SUCCESS(Status)) {
|
||||||
|
RtlZeroMemory( &IF->Name, sizeof(IF->Name) );
|
||||||
Status = ReadStringFromRegistry( RegHandle, L"DeviceDesc",
|
Status = ReadStringFromRegistry( RegHandle, L"DeviceDesc",
|
||||||
&IF->Name );
|
&IF->Name );
|
||||||
|
|
||||||
RtlZeroMemory( &IF->Name, sizeof( IF->Name ) );
|
|
||||||
|
|
||||||
/* I think that not getting a devicedesc is not a fatal error */
|
/* I think that not getting a devicedesc is not a fatal error */
|
||||||
if( !NT_SUCCESS(Status) ) {
|
if( !NT_SUCCESS(Status) ) {
|
||||||
if( IF->Name.Buffer ) exFreePool( IF->Name.Buffer );
|
if( IF->Name.Buffer ) exFreePool( IF->Name.Buffer );
|
||||||
|
@ -929,6 +950,8 @@ VOID BindAdapter(
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TI_DbgPrint(MID_TRACE,("Adapter Name: %wZ\n", &IF->Name));
|
||||||
|
|
||||||
if(!NT_SUCCESS(Status))
|
if(!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
TI_DbgPrint(MIN_TRACE, ("Unable to open protocol-specific registry key: 0x%x\n", Status));
|
TI_DbgPrint(MIN_TRACE, ("Unable to open protocol-specific registry key: 0x%x\n", Status));
|
||||||
|
|
|
@ -13,6 +13,8 @@ UINT CountInterfaceAddresses( PIP_INTERFACE Interface );
|
||||||
NTSTATUS GetInterfaceSpeed( PIP_INTERFACE Interface, PUINT Speed );
|
NTSTATUS GetInterfaceSpeed( PIP_INTERFACE Interface, PUINT Speed );
|
||||||
NTSTATUS GetInterfaceName( PIP_INTERFACE Interface, PCHAR NameBuffer,
|
NTSTATUS GetInterfaceName( PIP_INTERFACE Interface, PCHAR NameBuffer,
|
||||||
UINT NameMaxLen );
|
UINT NameMaxLen );
|
||||||
|
NTSTATUS GetInterfaceConnectionStatus( PIP_INTERFACE Interface,
|
||||||
|
PDWORD OperStatus );
|
||||||
PIP_INTERFACE FindOnLinkInterface(PIP_ADDRESS Address);
|
PIP_INTERFACE FindOnLinkInterface(PIP_ADDRESS Address);
|
||||||
|
|
||||||
#endif//_TCPIP_INTERFACE_H
|
#endif//_TCPIP_INTERFACE_H
|
||||||
|
|
|
@ -98,6 +98,9 @@ VOID LANUnregisterProtocol(
|
||||||
VOID LANStartup();
|
VOID LANStartup();
|
||||||
VOID LANShutdown();
|
VOID LANShutdown();
|
||||||
|
|
||||||
|
NTSTATUS TcpipLanGetDwordOid( PIP_INTERFACE Interface, NDIS_OID Oid,
|
||||||
|
PDWORD Result );
|
||||||
|
|
||||||
NDIS_STATUS NDISCall(
|
NDIS_STATUS NDISCall(
|
||||||
PLAN_ADAPTER Adapter,
|
PLAN_ADAPTER Adapter,
|
||||||
NDIS_REQUEST_TYPE Type,
|
NDIS_REQUEST_TYPE Type,
|
||||||
|
|
|
@ -35,5 +35,6 @@
|
||||||
#include <oskittcp.h>
|
#include <oskittcp.h>
|
||||||
#include <interface.h>
|
#include <interface.h>
|
||||||
#include <ports.h>
|
#include <ports.h>
|
||||||
|
#include <ipifcons.h>
|
||||||
#define NTOS_MODE_USER
|
#define NTOS_MODE_USER
|
||||||
#include <ntos.h>
|
#include <ntos.h>
|
||||||
|
|
|
@ -35,13 +35,19 @@ TDI_STATUS InfoTdiQueryGetInterfaceMIB(TDIEntityID *ID,
|
||||||
|
|
||||||
OutData->Index = ID->tei_instance + 1;
|
OutData->Index = ID->tei_instance + 1;
|
||||||
/* viz: tcpip keeps those indices */
|
/* viz: tcpip keeps those indices */
|
||||||
OutData->Type = Interface == Loopback ? IFENT_SOFTWARE_LOOPBACK : 0;
|
OutData->Type = Interface ==
|
||||||
|
Loopback ? MIB_IF_TYPE_LOOPBACK : MIB_IF_TYPE_ETHERNET;
|
||||||
OutData->Mtu = Interface->MTU;
|
OutData->Mtu = Interface->MTU;
|
||||||
TI_DbgPrint(MAX_TRACE,
|
TI_DbgPrint(MAX_TRACE,
|
||||||
("Getting interface speed\n"));
|
("Getting interface speed\n"));
|
||||||
OutData->PhysAddrLen = Interface->AddressLength;
|
OutData->PhysAddrLen = Interface->AddressLength;
|
||||||
OutData->AdminStatus = 1; /* XXX Up -- How do I know? */
|
OutData->AdminStatus = MIB_IF_ADMIN_STATUS_UP;
|
||||||
OutData->OperStatus = 1; /* XXX Up -- How do I know? */
|
/* NDIS_HARDWARE_STATUS -> ROUTER_CONNECTION_STATE */
|
||||||
|
Status = GetInterfaceConnectionStatus( Interface, &OutData->OperStatus );
|
||||||
|
|
||||||
|
/* Not sure what to do here, but not ready seems a safe bet on failure */
|
||||||
|
if( !NT_SUCCESS(Status) )
|
||||||
|
OutData->OperStatus = NdisHardwareStatusNotReady;
|
||||||
|
|
||||||
IFDescr = (PCHAR)&OutData[1];
|
IFDescr = (PCHAR)&OutData[1];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue