add EPICS_CA_MCAST_TTL
may be necessary/helpful for mcast search/beacon usage across sub-nets.
This commit is contained in:
@@ -38,6 +38,7 @@ EPICS_CA_MAX_ARRAY_BYTES=16384
|
||||
EPICS_CA_AUTO_MAX_ARRAY_BYTES=NO
|
||||
EPICS_CA_BEACON_PERIOD=15.0
|
||||
EPICS_CA_MAX_SEARCH_PERIOD=300.0
|
||||
EPICS_CA_MCAST_TTL=1
|
||||
EPICS_CAS_BEACON_PERIOD=
|
||||
EPICS_CAS_BEACON_PORT=
|
||||
EPICS_CAS_AUTO_BEACON_ADDR_LIST=""
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
|
||||
-->
|
||||
|
||||
<h3>Add EPICS_CA_MCAST_TTL</h3>
|
||||
|
||||
<p>Add option EPICS_CA_MCAST_TTL to set the Time To Live (TTL) of any IP multi-cast
|
||||
CA search or beacon packets sent.</p>
|
||||
|
||||
<h3>EPICS_CA_MAX_ARRAY_BYTES is optional</h3>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -191,6 +191,22 @@ udpiiu::udpiiu (
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef IP_MULTICAST_TTL
|
||||
{
|
||||
int ttl;
|
||||
long val;
|
||||
if(envGetLongConfigParam(&EPICS_CA_MCAST_TTL, &val))
|
||||
val =1;
|
||||
ttl = val;
|
||||
if ( setsockopt(this->sock, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(ttl))) {
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
errlogPrintf("CAC: failed to set mcast ttl %d\n", ttl);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int boolValue = true;
|
||||
int status = setsockopt ( this->sock, SOL_SOCKET, SO_BROADCAST,
|
||||
(char *) &boolValue, sizeof ( boolValue ) );
|
||||
|
||||
@@ -320,6 +320,22 @@ void rsrv_build_addr_lists(void)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef IP_MULTICAST_TTL
|
||||
{
|
||||
int ttl;
|
||||
long val;
|
||||
if(envGetLongConfigParam(&EPICS_CA_MCAST_TTL, &val))
|
||||
val =1;
|
||||
ttl = val;
|
||||
if ( setsockopt(beaconSocket, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(ttl))) {
|
||||
char sockErrBuf[64];
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
errlogPrintf("rsrv: failed to set mcast ttl %d\n", ttl);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* populate the interface address list (default is empty) */
|
||||
|
||||
1
src/libCom/env/envDefs.h
vendored
1
src/libCom/env/envDefs.h
vendored
@@ -51,6 +51,7 @@ epicsShareExtern const ENV_PARAM EPICS_CA_MAX_ARRAY_BYTES;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_AUTO_MAX_ARRAY_BYTES;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_MAX_SEARCH_PERIOD;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_NAME_SERVERS;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_MCAST_TTL;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CAS_INTF_ADDR_LIST;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CAS_IGNORE_ADDR_LIST;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CAS_AUTO_BEACON_ADDR_LIST;
|
||||
|
||||
Reference in New Issue
Block a user