25 #define nDigitsDottedIP 4u 28 #define makeMask(NBITS) ( ( 1u << ( (unsigned) NBITS) ) - 1u ) 39 if ( plhs->
sa.sa_family != prhs->
sa.sa_family ) {
42 else if ( plhs->
sa.sa_family != AF_INET ) {
45 else if ( plhs->
ia.sin_addr.s_addr != prhs->
ia.sin_addr.s_addr ) {
48 else if ( plhs->
ia.sin_port != prhs->
ia.sin_port ) {
62 const struct sockaddr * paddr,
char * pBuf,
unsigned bufSize )
68 if ( paddr->sa_family != AF_INET ) {
69 static const char * pErrStr =
"<Ukn Addr Type>";
70 unsigned len = strlen ( pErrStr );
71 if ( len < bufSize ) {
72 strcpy ( pBuf, pErrStr );
76 strncpy ( pBuf,
"<Ukn Addr Type>", bufSize-1 );
77 pBuf[bufSize-1] =
'\0';
82 const struct sockaddr_in * paddr_in =
83 (
const struct sockaddr_in *) paddr;
84 return ipAddrToA ( paddr_in, pBuf, bufSize );
93 const struct sockaddr_in * paddr,
char * pBuf,
unsigned bufSize )
96 & paddr->sin_addr, pBuf, bufSize );
101 unsigned reducedSize = bufSize - len;
103 &pBuf[len], reducedSize,
":%hu",
104 ntohs (paddr->sin_port) );
106 unsigned portSize = (unsigned) status;
107 if ( portSize < reducedSize ) {
119 const struct sockaddr * paddr,
char * pBuf,
unsigned bufSize )
121 if ( paddr->sa_family != AF_INET ) {
122 const char * pErrStr =
"<Ukn Addr Type>";
123 unsigned errStrLen = strlen ( pErrStr );
124 if ( errStrLen < bufSize ) {
125 strcpy ( pBuf, pErrStr );
129 unsigned reducedSize = bufSize - 1u;
130 strncpy ( pBuf, pErrStr, reducedSize );
131 pBuf[reducedSize] =
'\0';
136 const struct sockaddr_in *paddr_in = (
const struct sockaddr_in * ) paddr;
145 const struct sockaddr_in *paddr,
char *pBuf,
unsigned bufSize )
147 static const char * pErrStr =
"<IPA>";
149 unsigned addr = ntohl ( paddr->sin_addr.s_addr );
154 if ( bufSize == 0u ) {
168 pBuf, bufSize,
"%u.%u.%u.%u:%hu",
169 chunk[3], chunk[2], chunk[1], chunk[0],
170 ntohs ( paddr->sin_port ) );
172 strLen = ( unsigned ) status;
173 if ( strLen < bufSize - 1 ) {
177 strLen = strlen ( pErrStr );
178 if ( strLen < bufSize ) {
179 strcpy ( pBuf, pErrStr );
183 strncpy ( pBuf, pErrStr, bufSize );
184 pBuf[bufSize-1] =
'\0';
unsigned epicsStdCall sockAddrToDottedIP(const struct sockaddr *paddr, char *pBuf, unsigned bufSize)
An EPICS-specific replacement for ANSI C's assert.
unsigned epicsStdCall sockAddrToA(const struct sockaddr *paddr, char *pBuf, unsigned bufSize)
unsigned epicsStdCall ipAddrToA(const struct sockaddr_in *paddr, char *pBuf, unsigned bufSize)
OS-independent routines for ignoring Posix signals.
LIBCOM_API unsigned epicsStdCall ipAddrToHostName(const struct in_addr *pAddr, char *pBuf, unsigned bufSize)
int epicsStdCall sockAddrAreIdentical(const osiSockAddr *plhs, const osiSockAddr *prhs)
LIBCOM_API int epicsStdCall epicsSnprintf(char *str, size_t size, const char *format,...) EPICS_PRINTF_STYLE(3
unsigned epicsStdCall ipAddrToDottedIP(const struct sockaddr_in *paddr, char *pBuf, unsigned bufSize)