Good Morning All;
The following is what I use to get all the active adapters in a box and is used 
in conjunction with another app that returns very detailed info about the 
adapters active or not. It is much neater (humbly I say...) than ipconfig /all
I hope it is useful!
Best regards,

Jack Skelley

DO declare_dll
SET SAFETY OFF
#DEFINE MIB_IPADDRROW_SIZE   24
PRIVATE lWinsockEnabled
lWinsockEnabled = InitWinsock()
LOCAL lcBuffer, lnBufsize, lnEntries, lnIndex, lcEntryBuf
* allocate a space large enough to keep the data
lnBufsize = 8192
lcBuffer = Repli(Chr(0), lnBufsize)
= GetIpAddrTable (@lcBuffer, @lnBufsize, 1)
lnEntries = buf2dword(SUBSTR(lcBuffer, 1,4))
* resulting cursor
CREATE CURSOR tAdapters (ipaddr C(15), iindex N(3), smask C(15), bcast C(15), 
rsize N(12), hostname C(50))
FOR lnIndex = 1 TO lnEntries
     lcEntryBuf = SUBSTR(lcBuffer, 5+(lnIndex-1)*MIB_IPADDRROW_SIZE, 
MIB_IPADDRROW_SIZE)
     = AddEntry (lcEntryBuf)
ENDFOR
IF lWinsockEnabled
  = WSACleanup()
ENDIF
release dlls all
RETURN
*GO TOP
*BROWSE
* end of main
PROCEDURE  AddEntry (lcEntryBuf)
     LOCAL lcIPAddrBuf, lcIPAddr, lcHostName, lnIndex,;
         lcMask, lcBCast, lnRSize
     * IP address and the host name
     lcIPAddrBuf = SUBSTR(lcEntryBuf, 1,4)
     lcIPAddr    = inet_ntoa(buf2dword(lcIPAddrBuf))
     lcHostName  = GetHostName(lcIPAddrBuf)
     * the index of the interface associated with this IP address
     lnIndex = buf2dword(SUBSTR(lcEntryBuf, 5,4))
     * the subnet mask for the IP address
     lcMask  = inet_ntoa(buf2dword(SUBSTR(lcEntryBuf,  9,4)))
     * the broadcast address
     lcBCast = inet_ntoa(buf2dword(SUBSTR(lcEntryBuf, 13,4)))
     * the maximum re-assembly size for received datagrams
     lnRSize = buf2dword(SUBSTR(lcEntryBuf, 17,4))
     * VT Mod: Discard 127.0.0.1 and 0.0.0.0
     IF lcIPAddr <>"127.0.0.1" .AND. lcIPAddr <> "0.0.0.0"
       INSERT INTO tAdapters VALUES (lcIPAddr, lnIndex, lcMask, lcBCast, 
lnRSize, lcHostName)
     ENDIF
RETURN
FUNCTION  GetHostName (lcAddrBuf)
#DEFINE AF_INET        2 && internetwork: UDP, TCP, etc.
#DEFINE HOSTENT_SIZE  16
     LOCAL lcResult, lnHOSTENTptr, lcHOSTENT
     lcResult = ""
     IF lWinsockEnabled
         lnHOSTENTptr = gethostbyaddr(lcAddrBuf, 4, AF_INET)
         IF lnHOSTENTptr <> 0
             lcHOSTENT = GetMemBuf (lnHOSTENTptr, HOSTENT_SIZE)
             lcResult = GetMemStr(buf2dword(SUBSTR(lcHOSTENT, 1,4)))
         ENDIF
     ENDIF
RETURN  lcResult
FUNCTION  InitWinsock()
* Initializing the Winsock service for the application
#DEFINE WSADATA_SIZE  398
#DEFINE WS_VERSION    514  && 0x0202
     LOCAL lcWSADATAln, lnInitResult
     lcWSADATA = Repli(Chr(0), WSADATA_SIZE)
     lnInitResult = WSAStartup (WS_VERSION, @lcWSADATA)
RETURN  (lnInitResult = 0)
FUNCTION  GetMemBuf (lnAddr, lnBufsize)
* returning data from a memory block
     LOCAL lcBuffer
     lcBuffer = Repli(Chr(0), lnBufsize)
     = Heap2Str (@lcBuffer, lnAddr, lnBufsize)
RETURN  lcBuffer
FUNCTION  GetMemStr (lnAddr)
* returning data from a memory block
* before the first occurence of a zero byte
     LOCAL lcBuffer
     lcBuffer = GetMemBuf (lnAddr, 250)
RETURN  SUBSTR(lcBuffer, 1, AT(Chr(0),lcBuffer)-1)
FUNCTION  buf2dword (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
     Asc(SUBSTR(lcBuffer, 2,1)) * 256 +;
     Asc(SUBSTR(lcBuffer, 3,1)) * 65536 +;
     Asc(SUBSTR(lcBuffer, 4,1)) * 16777216
PROCEDURE  declare_dll
     DECLARE STRING inet_ntoa IN ws2_32 INTEGER in_addr
     DECLARE INTEGER WSACleanup IN ws2_32
     DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING @lpWSAData
     DECLARE INTEGER gethostbyaddr IN ws2_32 STRING addr, INTEGER len, INTEGER 
type
     DECLARE RtlMoveMemory IN kernel32 As Heap2Str STRING @Dest, INTEGER Src, 
INTEGER nLength
     DECLARE INTEGER GetIpAddrTable IN iphlpapi STRING @pIpAddrTable, INTEGER 
@pdwSize, INTEGER bOrder
return

Jack Skelley
Senior Director, Programming/Computer Operations
New Jersey Devils
(973)757-6164
[email protected]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/7d9e7f72b813014c8fd022cf04f820edede41...@ex08.drdad.thenewarkarena.com
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to