#include "envDefs.h"
#include "dbDefs.h"
#include "osiProcess.h"
#include "osiWireFormat.h"
#include "epicsAlgorithm.h"
#include "errlog.h"
#include "locationException.h"
#include "addrList.h"
#include "caerr.h"
#include "udpiiu.h"
#include "iocinf.h"
#include "inetAddrID.h"
#include "cac.h"
#include "disconnectGovernorTimer.h"
Go to the source code of this file.
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov" |
void epicsStdCall caRepeaterRegistrationMessage |
( |
SOCKET |
sock, |
|
|
unsigned |
repeaterPort, |
|
|
unsigned |
attemptNumber |
|
) |
| |
Definition at line 464 of file udpiiu.cpp.
472 assert ( repeaterPort <= USHRT_MAX );
473 unsigned short port = static_cast <
unsigned short> ( repeaterPort );
493 if ( attemptNumber & 1 ) {
495 if ( saddr.
sa.sa_family != AF_INET ) {
502 saddr.
ia.sin_family = AF_INET;
504 saddr.
ia.sin_port = htons ( port );
507 saddr.
ia.sin_port = htons ( port );
511 saddr.
ia.sin_family = AF_INET;
513 saddr.
ia.sin_port = htons ( port );
516 memset ( (
char *) &msg, 0,
sizeof (msg) );
527 # if defined ( DOES_NOT_ACCEPT_ZERO_LENGTH_UDP ) 533 status = sendto ( sock, (
char *) &msg, len, 0,
534 &saddr.
sa, sizeof ( saddr ) );
550 sockErrBuf,
sizeof ( sockErrBuf ) );
551 fprintf (
stderr,
"error sending registration message to CA repeater daemon was \"%s\"\n",
#define SOCK_ECONNREFUSED
#define REPEATER_REGISTER
#define assert(exp)
Declare that a condition should be true.
void epicsSocketConvertErrnoToString(char *pBuf, unsigned bufSize)
LIBCOM_API osiSockAddr epicsStdCall osiLocalAddr(SOCKET socket)
void epicsStdCall caStartRepeaterIfNotInstalled |
( |
unsigned |
repeaterPort | ) |
|
Definition at line 581 of file udpiiu.cpp.
583 bool installed =
false;
587 struct sockaddr_in ia;
591 if ( repeaterPort > 0xffff ) {
592 fprintf (
stderr,
"caStartRepeaterIfNotInstalled () : strange repeater port specified\n" );
599 memset ( (
char *) &bd, 0,
sizeof ( bd ) );
600 bd.ia.sin_family = AF_INET;
601 bd.ia.sin_addr.s_addr = htonl ( INADDR_ANY );
602 bd.ia.sin_port = htons ( port );
603 status = bind ( tmpSock, &bd.sa, sizeof ( bd ) );
609 fprintf (
stderr,
"caStartRepeaterIfNotInstalled () : bind failed\n" );
638 fprintf (
stderr,
"caStartRepeaterIfNotInstalled : unable to create CA repeater daemon thread\n" );
642 fprintf (
stderr,
"caStartRepeaterIfNotInstalled (): unable to start CA repeater daemon detached process\n" );
LIBCOM_API void epicsStdCall epicsSocketDestroy(SOCKET s)
unsigned short ca_uint16_t
LIBCOM_API unsigned int epicsStdCall epicsThreadGetStackSize(epicsThreadStackSizeClass size)
epicsThreadId epicsStdCall epicsThreadCreate(const char *name, unsigned int priority, unsigned int stackSize, EPICSTHREADFUNC funptr, void *parm)
LIBCOM_API SOCKET epicsStdCall epicsSocketCreate(int domain, int type, int protocol)
osiSpawnDetachedProcessReturn
void caRepeaterThread(void *)
LIBCOM_API void epicsStdCall epicsSocketEnableAddressReuseDuringTimeWaitState(SOCKET s)
#define epicsThreadPriorityLow
LIBCOM_API osiSpawnDetachedProcessReturn epicsStdCall osiSpawnDetachedProcess(const char *pProcessName, const char *pBaseExecutableName)