new env var

This commit is contained in:
Jeff Hill
1994-11-29 22:41:46 +00:00
parent 53b2a77378
commit da47b297d2
3 changed files with 43 additions and 20 deletions
+7 -3
View File
@@ -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) {
+5 -2
View File
@@ -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
View File
@@ -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);