committed a fix for mantis 302
This commit is contained in:
@@ -23,7 +23,8 @@ epicsShareFunc void epicsShareAPI configureChannelAccessAddressList
|
|||||||
( struct ELLLIST *pList, SOCKET sock, unsigned short port );
|
( struct ELLLIST *pList, SOCKET sock, unsigned short port );
|
||||||
|
|
||||||
epicsShareFunc void epicsShareAPI addAddrToChannelAccessAddressList
|
epicsShareFunc void epicsShareAPI addAddrToChannelAccessAddressList
|
||||||
( struct ELLLIST *pList, const ENV_PARAM *pEnv, unsigned short port );
|
( struct ELLLIST *pList, const ENV_PARAM *pEnv,
|
||||||
|
unsigned short port, int ignoreNonDefaultPort );
|
||||||
|
|
||||||
epicsShareFunc void epicsShareAPI printChannelAccessAddressList
|
epicsShareFunc void epicsShareAPI printChannelAccessAddressList
|
||||||
( const struct ELLLIST *pList );
|
( const struct ELLLIST *pList );
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ static char *getToken ( const char **ppString, char *pBuf, unsigned bufSIze )
|
|||||||
* addAddrToChannelAccessAddressList ()
|
* addAddrToChannelAccessAddressList ()
|
||||||
*/
|
*/
|
||||||
extern "C" void epicsShareAPI addAddrToChannelAccessAddressList
|
extern "C" void epicsShareAPI addAddrToChannelAccessAddressList
|
||||||
( ELLLIST *pList, const ENV_PARAM *pEnv, unsigned short port )
|
( ELLLIST *pList, const ENV_PARAM *pEnv,
|
||||||
|
unsigned short port, int ignoreNonDefaultPort )
|
||||||
{
|
{
|
||||||
osiSockAddrNode *pNewNode;
|
osiSockAddrNode *pNewNode;
|
||||||
const char *pStr;
|
const char *pStr;
|
||||||
@@ -96,6 +97,10 @@ extern "C" void epicsShareAPI addAddrToChannelAccessAddressList
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( ignoreNonDefaultPort && addr.sin_port != port ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
pNewNode = (osiSockAddrNode *) calloc (1, sizeof(*pNewNode));
|
pNewNode = (osiSockAddrNode *) calloc (1, sizeof(*pNewNode));
|
||||||
if (pNewNode==NULL) {
|
if (pNewNode==NULL) {
|
||||||
fprintf ( stderr, "addAddrToChannelAccessAddressList(): no memory available for configuration\n");
|
fprintf ( stderr, "addAddrToChannelAccessAddressList(): no memory available for configuration\n");
|
||||||
@@ -235,7 +240,7 @@ extern "C" void epicsShareAPI configureChannelAccessAddressList
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addAddrToChannelAccessAddressList ( &tmpList, &EPICS_CA_ADDR_LIST, port );
|
addAddrToChannelAccessAddressList ( &tmpList, &EPICS_CA_ADDR_LIST, port, FALSE );
|
||||||
|
|
||||||
removeDuplicateAddresses ( pList, &tmpList, 0 );
|
removeDuplicateAddresses ( pList, &tmpList, 0 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ casDGIntfIO::casDGIntfIO ( caServerI & serverIn, clientBufMemoryManager & memMgr
|
|||||||
// add in the configured addresses
|
// add in the configured addresses
|
||||||
//
|
//
|
||||||
addAddrToChannelAccessAddressList (
|
addAddrToChannelAccessAddressList (
|
||||||
& BCastAddrList, pParam, beaconPort );
|
& BCastAddrList, pParam, beaconPort, pParam == & EPICS_CA_ADDR_LIST );
|
||||||
}
|
}
|
||||||
|
|
||||||
removeDuplicateAddresses ( & this->beaconAddrList, & BCastAddrList, 0 );
|
removeDuplicateAddresses ( & this->beaconAddrList, & BCastAddrList, 0 );
|
||||||
@@ -177,7 +177,7 @@ casDGIntfIO::casDGIntfIO ( caServerI & serverIn, clientBufMemoryManager & memMgr
|
|||||||
ellInit ( & parsed );
|
ellInit ( & parsed );
|
||||||
ellInit ( & filtered );
|
ellInit ( & filtered );
|
||||||
// we dont care what port they are coming from
|
// we dont care what port they are coming from
|
||||||
addAddrToChannelAccessAddressList ( & parsed, & EPICS_CAS_IGNORE_ADDR_LIST, 0 );
|
addAddrToChannelAccessAddressList ( & parsed, & EPICS_CAS_IGNORE_ADDR_LIST, 0, false );
|
||||||
removeDuplicateAddresses ( & filtered, & parsed, true );
|
removeDuplicateAddresses ( & filtered, & parsed, true );
|
||||||
|
|
||||||
while ( ELLNODE * pRawNode = ellGet ( & filtered ) ) {
|
while ( ELLNODE * pRawNode = ellGet ( & filtered ) ) {
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ void rsrv_online_notify_task(void *pParm)
|
|||||||
* add in the configured addresses
|
* add in the configured addresses
|
||||||
*/
|
*/
|
||||||
addAddrToChannelAccessAddressList (
|
addAddrToChannelAccessAddressList (
|
||||||
&autoAddrList, pParam, port);
|
&autoAddrList, pParam, port, pParam == &EPICS_CA_ADDR_LIST );
|
||||||
}
|
}
|
||||||
|
|
||||||
removeDuplicateAddresses ( &beaconAddrList, &autoAddrList, 0 );
|
removeDuplicateAddresses ( &beaconAddrList, &autoAddrList, 0 );
|
||||||
|
|||||||
Reference in New Issue
Block a user