new env var
This commit is contained in:
@@ -66,6 +66,7 @@ static char *sccsId = "@(#)caservertask.c 1.22 5/6/94";
|
||||
#include <taskwd.h>
|
||||
#include <db_access.h>
|
||||
#include <task_params.h>
|
||||
#include <envDefs.h>
|
||||
#include <server.h>
|
||||
|
||||
LOCAL int terminate_one_client(struct client *client);
|
||||
@@ -88,6 +89,11 @@ int req_server(void)
|
||||
struct sockaddr_in serverAddr; /* server's address */
|
||||
int status;
|
||||
int i;
|
||||
short port;
|
||||
|
||||
taskwdInsert((int)taskIdCurrent,NULL,NULL);
|
||||
|
||||
port = caFetchPortConfig(&EPICS_CA_SERVER_PORT, CA_SERVER_PORT);
|
||||
|
||||
if (IOC_sock != 0 && IOC_sock != ERROR)
|
||||
if ((status = close(IOC_sock)) == ERROR)
|
||||
@@ -113,13 +119,11 @@ int req_server(void)
|
||||
NULL);
|
||||
taskSuspend(0);
|
||||
}
|
||||
|
||||
taskwdInsert((int)taskIdCurrent,NULL,NULL);
|
||||
|
||||
/* Zero the sock_addr structure */
|
||||
bfill((char *)&serverAddr, sizeof(serverAddr), 0);
|
||||
serverAddr.sin_family = AF_INET;
|
||||
serverAddr.sin_port = CA_SERVER_PORT;
|
||||
serverAddr.sin_port = htons(port);
|
||||
|
||||
/* get server's Internet address */
|
||||
if (bind(IOC_sock, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) == ERROR) {
|
||||
|
||||
@@ -79,6 +79,7 @@ static char *sccsId = "@(#)cast_server.c 1.24 5/6/94";
|
||||
#include <taskwd.h>
|
||||
#include <db_access.h>
|
||||
#include <task_params.h>
|
||||
#include <envDefs.h>
|
||||
#include <server.h>
|
||||
|
||||
|
||||
@@ -100,9 +101,12 @@ int cast_server(void)
|
||||
struct sockaddr_in new_recv_addr;
|
||||
int recv_addr_size;
|
||||
unsigned nchars;
|
||||
short port;
|
||||
|
||||
taskwdInsert((int)taskIdCurrent,NULL,NULL);
|
||||
|
||||
port = caFetchPortConfig(&EPICS_CA_SERVER_PORT, CA_SERVER_PORT);
|
||||
|
||||
recv_addr_size = sizeof(new_recv_addr);
|
||||
|
||||
if( IOC_cast_sock!=0 && IOC_cast_sock!=ERROR )
|
||||
@@ -137,8 +141,7 @@ int cast_server(void)
|
||||
bfill((char *)&sin, sizeof(sin), 0);
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_addr.s_addr = INADDR_ANY;
|
||||
sin.sin_port = CA_SERVER_PORT;
|
||||
|
||||
sin.sin_port = htons(port);
|
||||
|
||||
/* get server's Internet address */
|
||||
if( bind(IOC_cast_sock, (struct sockaddr *)&sin, sizeof (sin)) == ERROR){
|
||||
|
||||
+31
-15
@@ -74,23 +74,39 @@ int rsrv_online_notify_task()
|
||||
{
|
||||
ELLLIST destAddr;
|
||||
caAddrNode *pNode;
|
||||
/*
|
||||
* 1 sec init delay
|
||||
*/
|
||||
unsigned long delay = sysClkRateGet();
|
||||
/*
|
||||
* CA_ONLINE_DELAY max delay in ticks
|
||||
*/
|
||||
unsigned long maxdelay = CA_ONLINE_DELAY;
|
||||
unsigned long delay;
|
||||
unsigned long maxdelay;
|
||||
long longStatus;
|
||||
double maxPeriod;
|
||||
struct extmsg msg;
|
||||
|
||||
struct sockaddr_in recv_addr;
|
||||
int status;
|
||||
int sock;
|
||||
int true = TRUE;
|
||||
short port;
|
||||
|
||||
taskwdInsert(taskIdSelf(),NULL,NULL);
|
||||
|
||||
longStatus = envGetDoubleConfigParam (
|
||||
&EPICS_CA_BEACON_PERIOD,
|
||||
&maxPeriod);
|
||||
if (longStatus) {
|
||||
maxPeriod = 15.0;
|
||||
ca_printf (
|
||||
"EPICS \"%s\" float fetch failed\n",
|
||||
EPICS_CA_BEACON_PERIOD.name);
|
||||
ca_printf (
|
||||
"Setting \"%s\" = %f\n",
|
||||
EPICS_CA_BEACON_PERIOD.name,
|
||||
maxPeriod);
|
||||
}
|
||||
|
||||
/*
|
||||
* 1 sec init delay between beacons
|
||||
*/
|
||||
delay = sysClkRateGet();
|
||||
maxdelay = max(maxPeriod*sysClkRateGet(),sysClkRateGet());
|
||||
|
||||
/*
|
||||
* Open the socket.
|
||||
* Use ARPA Internet address format and datagram socket.
|
||||
@@ -128,13 +144,13 @@ int rsrv_online_notify_task()
|
||||
msg.m_cmmd = htons(IOC_RSRV_IS_UP);
|
||||
|
||||
ellInit(&destAddr);
|
||||
caDiscoverInterfaces(&destAddr, sock, CA_CLIENT_PORT);
|
||||
|
||||
caAddConfiguredAddr(
|
||||
&destAddr,
|
||||
&EPICS_CA_ADDR_LIST,
|
||||
sock,
|
||||
CA_CLIENT_PORT);
|
||||
/*
|
||||
* load user and auto configured
|
||||
* broadcast address list
|
||||
*/
|
||||
port = caFetchPortConfig(&EPICS_CA_REPEATER_PORT, CA_REPEATER_PORT);
|
||||
caSetupBCastAddrList (&destAddr, sock, port);
|
||||
|
||||
# ifdef DEBUG
|
||||
caPrintAddrList(&destAddr);
|
||||
|
||||
Reference in New Issue
Block a user