vis C++ version 6.0 ng IP workaround

This commit is contained in:
Jeff Hill
1999-07-15 21:10:38 +00:00
parent a001aa24d8
commit db6fe79dac
+43 -24
View File
@@ -32,6 +32,12 @@
* Modification Log:
* -----------------
* $Log$
* Revision 1.44 1999/04/29 23:53:32 jhill
* now compatible with API changes in winsock provided with 6.0 SDK
*
* Revision 1.43 1998/09/24 23:52:57 jhill
* eliminated DLL run-down call to ca_task_exit()
*
* Revision 1.42 1998/09/24 21:22:56 jhill
* conn.c
*
@@ -82,6 +88,12 @@
*
* Revision 1.19 1995/11/29 19:15:42 jhill
* added $Log$
* added Revision 1.44 1999/04/29 23:53:32 jhill
* added now compatible with API changes in winsock provided with 6.0 SDK
* added
* added Revision 1.43 1998/09/24 23:52:57 jhill
* added eliminated DLL run-down call to ca_task_exit()
* added
* added Revision 1.42 1998/09/24 21:22:56 jhill
* added conn.c
* added
@@ -213,7 +225,7 @@ void cac_gettimeval(struct timeval *pt)
*/
void cac_block_for_io_completion(struct timeval *pTV)
{
cac_mux_io(pTV);
cac_mux_io(pTV, TRUE);
}
@@ -238,7 +250,7 @@ void os_specific_sg_delete(CASG *pcasg)
void cac_block_for_sg_completion(CASG *pcasg, struct timeval *pTV)
{
cac_mux_io(pTV);
cac_mux_io(pTV, TRUE);
}
@@ -488,18 +500,17 @@ void caSetDefaultPrintfHandler ()
int local_addr (SOCKET socket, struct sockaddr_in *plcladdr)
{
int status;
struct sockaddr *pLclSAddr =
(struct sockaddr *) plcladdr;
LPINTERFACE_INFO pIfinfo;
LPINTERFACE_INFO pIfinfoList;
INTERFACE_INFO *pIfinfo;
INTERFACE_INFO *pIfinfoList;
struct sockaddr_in *pInetAddr;
unsigned nelem;
DWORD numifs;
DWORD cbBytesReturned;
static struct sockaddr addr;
static struct sockaddr_in addr;
static char init = FALSE;
if (init) {
*pLclSAddr = addr;
*plcladdr = addr;
return 0;
}
@@ -516,7 +527,7 @@ int local_addr (SOCKET socket, struct sockaddr_in *plcladdr)
}
nelem = 10;
pIfinfoList = (LPINTERFACE_INFO)calloc(nelem, sizeof(INTERFACE_INFO));
pIfinfoList = (INTERFACE_INFO *) calloc(nelem, sizeof(INTERFACE_INFO));
if(!pIfinfoList){
return -1;
}
@@ -549,23 +560,28 @@ int local_addr (SOCKET socket, struct sockaddr_in *plcladdr)
continue;
}
pInetAddr = (struct sockaddr_in *) &pIfinfo->iiAddress;
/*
* If its not an internet inteface
* then dont use it. But for MS Winsock2
* assume 0 means internet.
*/
if (pIfinfo->iiAddress.sa_family != AF_INET) {
if (pIfinfo->iiAddress.sa_family == 0)
pIfinfo->iiAddress.sa_family = AF_INET;
else
if (pInetAddr->sin_family != AF_INET) {
if (pInetAddr->sin_family == 0) {
pInetAddr->sin_family = AF_INET;
}
else {
continue;
}
}
/*
* save the interface's IP address
*/
addr = pIfinfo->iiAddress;
*pLclSAddr = addr;
addr = *pInetAddr;
*plcladdr = addr;
init = TRUE;
free (pIfinfoList);
return 0;
@@ -604,8 +620,8 @@ void epicsShareAPI caDiscoverInterfaces(ELLLIST *pList, SOCKET socket,
struct sockaddr_in *pInetNetMask;
caAddrNode *pNode;
int status;
LPINTERFACE_INFO pIfinfo;
LPINTERFACE_INFO pIfinfoList;
INTERFACE_INFO *pIfinfo;
INTERFACE_INFO *pIfinfoList;
unsigned nelem;
int numifs;
DWORD cbBytesReturned;
@@ -623,7 +639,7 @@ void epicsShareAPI caDiscoverInterfaces(ELLLIST *pList, SOCKET socket,
}
nelem = 10;
pIfinfoList = (LPINTERFACE_INFO)calloc(nelem, sizeof(INTERFACE_INFO));
pIfinfoList = (INTERFACE_INFO *) calloc(nelem, sizeof(INTERFACE_INFO));
if(!pIfinfoList){
return;
}
@@ -656,23 +672,26 @@ void epicsShareAPI caDiscoverInterfaces(ELLLIST *pList, SOCKET socket,
continue;
}
pInetAddr = (struct sockaddr_in *) &pIfinfo->iiAddress;
pInetNetMask = (struct sockaddr_in *) &pIfinfo->iiNetmask;
/*
* If its not an internet inteface
* then dont use it. But for MS Winsock2
* assume 0 means internet.
*/
if (pIfinfo->iiAddress.sa_family != AF_INET) {
if (pIfinfo->iiAddress.sa_family == 0)
pIfinfo->iiAddress.sa_family = AF_INET;
else
if (pInetAddr->sin_family != AF_INET) {
if (pInetAddr->sin_family == 0) {
pInetAddr->sin_family = AF_INET;
}
else {
continue;
}
}
/*
* save the interface's IP address
*/
pInetAddr = (struct sockaddr_in *)&pIfinfo->iiAddress;
pInetNetMask = (struct sockaddr_in *)&pIfinfo->iiNetmask;
localAddr = *pInetAddr;
/*