2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
4 * FILE: tcpip/interface.c
5 * PURPOSE: Convenient abstraction for getting and setting information
7 * PROGRAMMERS: Art Yerkes
9 * CSH 01/08-2000 Created
15 NTSTATUS
GetInterfaceIPv4Address( PIP_INTERFACE Interface
,
18 ADE_LIST_ITER(CurrentADE
);
20 ForEachADE(Interface
->ADEListHead
,CurrentADE
) {
21 if (CurrentADE
->Type
== TargetType
) {
22 *Address
= CurrentADE
->Address
.Address
.IPv4Address
;
23 return STATUS_SUCCESS
;
27 return STATUS_UNSUCCESSFUL
;
30 UINT
CountInterfaces() {
33 IF_LIST_ITER(CurrentIF
);
35 TcpipAcquireSpinLock(&InterfaceListLock
, &OldIrql
);
37 ForEachInterface(CurrentIF
) {
41 TcpipReleaseSpinLock(&InterfaceListLock
, OldIrql
);
46 UINT
CountInterfaceAddresses( PIP_INTERFACE Interface
) {
48 ADE_LIST_ITER(CurrentADE
);
50 ForEachADE(Interface
->ADEListHead
,CurrentADE
) {
51 if( CurrentADE
->Type
== ADE_UNICAST
)
58 NTSTATUS
GetInterfaceSpeed( PIP_INTERFACE Interface
, PUINT Speed
) {
59 NDIS_STATUS NdisStatus
;
60 PLAN_ADAPTER IF
= (PLAN_ADAPTER
)Interface
->Context
;
63 /* Get maximum link speed */
64 NdisStatus
= NDISCall(IF
,
65 NdisRequestQueryInformation
,
71 NdisStatus
= NDIS_STATUS_SUCCESS
;
76 NdisStatus
!= NDIS_STATUS_SUCCESS
?
77 STATUS_UNSUCCESSFUL
: STATUS_SUCCESS
;
80 NTSTATUS
GetInterfaceName( PIP_INTERFACE Interface
,
83 NDIS_STATUS NdisStatus
;
84 PLAN_ADAPTER IF
= (PLAN_ADAPTER
)Interface
->Context
;
87 /* Get maximum link speed */
88 NdisStatus
= NDISCall(IF
,
89 NdisRequestQueryInformation
,
90 OID_GEN_FRIENDLY_NAME
,
95 NdisStatus
= NDIS_STATUS_SUCCESS
;
96 strncpy( NameBuffer
, "eth", Len
);
100 NdisStatus
!= NDIS_STATUS_SUCCESS
?
101 STATUS_UNSUCCESSFUL
: STATUS_SUCCESS
;