Skip to content

Commit

Permalink
libpcp: hide internal details for platform-independent socket services
Browse files Browse the repository at this point in the history
  • Loading branch information
kmcdonell committed Nov 14, 2017
1 parent 50ca894 commit b1d0e97
Show file tree
Hide file tree
Showing 13 changed files with 94 additions and 80 deletions.
1 change: 1 addition & 0 deletions qa/src/clienttimeout.c
Expand Up @@ -6,6 +6,7 @@

#include <pcp/pmapi.h>
#include <pcp/impl.h>
#include "libpcp.h"

int
main(int argc, char *argv[])
Expand Down
1 change: 1 addition & 0 deletions qa/src/proc_test.c
Expand Up @@ -58,6 +58,7 @@
#include <sys/wait.h>
#include <pcp/pmapi.h>
#include <pcp/impl.h>
#include "libpcp.h"

#ifdef HAVE_PROCFS
#ifdef IS_NETBSD
Expand Down
1 change: 1 addition & 0 deletions qa/src/xlog.c
Expand Up @@ -9,6 +9,7 @@
#include <ctype.h>
#include <pcp/pmapi.h>
#include <pcp/impl.h>
#include "libpcp.h"

static int vflag;
static int numpmid;
Expand Down
80 changes: 0 additions & 80 deletions src/include/pcp/impl.h
Expand Up @@ -240,88 +240,8 @@ PCP_CALL extern int __pmGetDomainLabels(int, const char *, pmLabelSet **);
PCP_CALL extern void __pmDumpLabelSet(FILE *, const pmLabelSet *);
PCP_CALL extern void __pmDumpLabelSets(FILE *, const pmLabelSet *, int);

typedef fd_set __pmFdSet;
typedef struct __pmSockAddr __pmSockAddr;
typedef struct __pmHostEnt __pmHostEnt;

PCP_CALL extern int __pmCreateSocket(void);
PCP_CALL extern int __pmCreateIPv6Socket(void);
PCP_CALL extern int __pmCreateUnixSocket(void);
PCP_CALL extern void __pmCloseSocket(int);

PCP_CALL extern int __pmSetSockOpt(int, int, int, const void *, __pmSockLen);
PCP_CALL extern int __pmGetSockOpt(int, int, int, void *, __pmSockLen *);
PCP_CALL extern int __pmConnect(int, void *, __pmSockLen);
PCP_CALL extern int __pmBind(int, void *, __pmSockLen);
PCP_CALL extern int __pmListen(int, int);
PCP_CALL extern int __pmAccept(int, void *, __pmSockLen *);
PCP_CALL extern ssize_t __pmWrite(int, const void *, size_t);
PCP_CALL extern ssize_t __pmRead(int, void *, size_t);
PCP_CALL extern ssize_t __pmSend(int, const void *, size_t, int);
PCP_CALL extern ssize_t __pmRecv(int, void *, size_t, int);
PCP_CALL extern int __pmConnectTo(int, const __pmSockAddr *, int);
PCP_CALL extern int __pmConnectCheckError(int);
PCP_CALL extern int __pmConnectRestoreFlags(int, int);
PCP_CALL extern int __pmSocketClosed(void);
PCP_CALL extern int __pmGetFileStatusFlags(int);
PCP_CALL extern int __pmSetFileStatusFlags(int, int);
PCP_CALL extern int __pmGetFileDescriptorFlags(int);
PCP_CALL extern int __pmSetFileDescriptorFlags(int, int);

PCP_CALL extern int __pmFD(int);
PCP_CALL extern void __pmFD_CLR(int, __pmFdSet *);
PCP_CALL extern int __pmFD_ISSET(int, __pmFdSet *);
PCP_CALL extern void __pmFD_SET(int, __pmFdSet *);
PCP_CALL extern void __pmFD_ZERO(__pmFdSet *);
PCP_CALL extern void __pmFD_COPY(__pmFdSet *, const __pmFdSet *);
PCP_CALL extern int __pmSelectRead(int, __pmFdSet *, struct timeval *);
PCP_CALL extern int __pmSelectWrite(int, __pmFdSet *, struct timeval *);

PCP_CALL extern __pmSockAddr *__pmSockAddrAlloc(void);
PCP_CALL extern void __pmSockAddrFree(__pmSockAddr *);
PCP_CALL extern size_t __pmSockAddrSize(void);
PCP_CALL extern void __pmSockAddrInit(__pmSockAddr *, int, int, int);
PCP_CALL extern int __pmSockAddrCompare(const __pmSockAddr *, const __pmSockAddr *);
PCP_CALL extern __pmSockAddr *__pmSockAddrDup(const __pmSockAddr *);
PCP_CALL extern __pmSockAddr *__pmSockAddrMask(__pmSockAddr *, const __pmSockAddr *);
PCP_CALL extern void __pmSockAddrSetFamily(__pmSockAddr *, int);
PCP_CALL extern int __pmSockAddrGetFamily(const __pmSockAddr *);
PCP_CALL extern void __pmSockAddrSetPort(__pmSockAddr *, int);
PCP_CALL extern int __pmSockAddrGetPort(const __pmSockAddr *);
PCP_CALL extern void __pmSockAddrSetScope(__pmSockAddr *, int);
PCP_CALL extern void __pmSockAddrSetPath(__pmSockAddr *, const char *);
PCP_CALL extern int __pmSockAddrIsLoopBack(const __pmSockAddr *);
PCP_CALL extern int __pmSockAddrIsInet(const __pmSockAddr *);
PCP_CALL extern int __pmSockAddrIsIPv6(const __pmSockAddr *);
PCP_CALL extern int __pmSockAddrIsUnix(const __pmSockAddr *);
PCP_CALL extern char * __pmSockAddrToString(const __pmSockAddr *);
PCP_CALL extern __pmSockAddr *__pmStringToSockAddr(const char *);
PCP_CALL extern __pmSockAddr *__pmLoopBackAddress(int);
PCP_CALL extern __pmSockAddr *__pmSockAddrFirstSubnetAddr(const __pmSockAddr *, int);
PCP_CALL extern __pmSockAddr *__pmSockAddrNextSubnetAddr(__pmSockAddr *, int);

PCP_CALL extern __pmHostEnt * __pmHostEntAlloc(void);
PCP_CALL extern void __pmHostEntFree(__pmHostEnt *);
PCP_CALL extern __pmSockAddr *__pmHostEntGetSockAddr(const __pmHostEnt *, void **);
PCP_CALL extern char * __pmHostEntGetName(__pmHostEnt *);

PCP_CALL extern __pmHostEnt * __pmGetAddrInfo(const char *);
PCP_CALL extern char * __pmGetNameInfo(__pmSockAddr *);

/*
* Dump the current context (source details + instance profile),
* for a particular instance domain.
* If indom == PM_INDOM_NULL, then print all instance domains
*/
PCP_CALL extern void __pmDumpContext(FILE *, int, pmInDom);

PCP_CALL extern void __pmIgnoreSignalPIPE(void);

PCP_CALL extern double __pmConnectTimeout(void);
PCP_CALL extern int __pmSetConnectTimeout(double);
PCP_CALL extern double __pmRequestTimeout(void);
PCP_CALL extern int __pmSetRequestTimeout(double);

/*
* no mem today, my love has gone away ....
*/
Expand Down
83 changes: 83 additions & 0 deletions src/include/pcp/libpcp.h
Expand Up @@ -24,6 +24,13 @@
#ifndef PCP_LIBPCP_H
#define PCP_LIBPCP_H

/*
* TODO
* demote names from pm... to __pm... for
* - pmHostSpec
* - pmTimeZone
*/

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -417,6 +424,69 @@ PCP_CALL extern void __pmOverrideLastFd(int);
PCP_CALL extern void __pmPrintIPC(void);
PCP_CALL extern void __pmResetIPC(int);

/* platform independent socket services */
typedef fd_set __pmFdSet;
typedef struct __pmSockAddr __pmSockAddr;
typedef struct __pmHostEnt __pmHostEnt;
PCP_CALL extern int __pmCreateSocket(void);
PCP_CALL extern int __pmCreateIPv6Socket(void);
PCP_CALL extern int __pmCreateUnixSocket(void);
PCP_CALL extern int __pmBind(int, void *, __pmSockLen);
PCP_CALL extern int __pmListen(int, int);
PCP_CALL extern int __pmConnect(int, void *, __pmSockLen);
PCP_CALL extern int __pmAccept(int, void *, __pmSockLen *);
PCP_CALL extern void __pmCloseSocket(int);
PCP_CALL extern int __pmSetSockOpt(int, int, int, const void *, __pmSockLen);
PCP_CALL extern int __pmGetSockOpt(int, int, int, void *, __pmSockLen *);
PCP_CALL extern ssize_t __pmWrite(int, const void *, size_t);
PCP_CALL extern ssize_t __pmRead(int, void *, size_t);
PCP_CALL extern ssize_t __pmSend(int, const void *, size_t, int);
PCP_CALL extern ssize_t __pmRecv(int, void *, size_t, int);
PCP_CALL extern int __pmConnectTo(int, const __pmSockAddr *, int);
PCP_CALL extern int __pmConnectCheckError(int);
PCP_CALL extern int __pmConnectRestoreFlags(int, int);
PCP_CALL extern int __pmSocketClosed(void);
PCP_CALL extern int __pmGetFileStatusFlags(int);
PCP_CALL extern int __pmSetFileStatusFlags(int, int);
PCP_CALL extern int __pmGetFileDescriptorFlags(int);
PCP_CALL extern int __pmSetFileDescriptorFlags(int, int);
PCP_CALL extern int __pmFD(int);
PCP_CALL extern void __pmFD_CLR(int, __pmFdSet *);
PCP_CALL extern int __pmFD_ISSET(int, __pmFdSet *);
PCP_CALL extern void __pmFD_SET(int, __pmFdSet *);
PCP_CALL extern void __pmFD_ZERO(__pmFdSet *);
PCP_CALL extern void __pmFD_COPY(__pmFdSet *, const __pmFdSet *);
PCP_CALL extern int __pmSelectRead(int, __pmFdSet *, struct timeval *);
PCP_CALL extern int __pmSelectWrite(int, __pmFdSet *, struct timeval *);
PCP_CALL extern __pmSockAddr *__pmSockAddrAlloc(void);
PCP_CALL extern void __pmSockAddrFree(__pmSockAddr *);
PCP_CALL extern size_t __pmSockAddrSize(void);
PCP_CALL extern void __pmSockAddrInit(__pmSockAddr *, int, int, int);
PCP_CALL extern int __pmSockAddrCompare(const __pmSockAddr *, const __pmSockAddr *);
PCP_CALL extern __pmSockAddr *__pmSockAddrDup(const __pmSockAddr *);
PCP_CALL extern __pmSockAddr *__pmSockAddrMask(__pmSockAddr *, const __pmSockAddr *);
PCP_CALL extern void __pmSockAddrSetFamily(__pmSockAddr *, int);
PCP_CALL extern int __pmSockAddrGetFamily(const __pmSockAddr *);
PCP_CALL extern void __pmSockAddrSetPort(__pmSockAddr *, int);
PCP_CALL extern int __pmSockAddrGetPort(const __pmSockAddr *);
PCP_CALL extern void __pmSockAddrSetScope(__pmSockAddr *, int);
PCP_CALL extern void __pmSockAddrSetPath(__pmSockAddr *, const char *);
PCP_CALL extern int __pmSockAddrIsLoopBack(const __pmSockAddr *);
PCP_CALL extern int __pmSockAddrIsInet(const __pmSockAddr *);
PCP_CALL extern int __pmSockAddrIsIPv6(const __pmSockAddr *);
PCP_CALL extern int __pmSockAddrIsUnix(const __pmSockAddr *);
PCP_CALL extern char * __pmSockAddrToString(const __pmSockAddr *);
PCP_CALL extern char * __pmGetNameInfo(__pmSockAddr *);
PCP_CALL extern __pmSockAddr *__pmStringToSockAddr(const char *);
PCP_CALL extern __pmSockAddr *__pmLoopBackAddress(int);
PCP_CALL extern __pmSockAddr *__pmSockAddrFirstSubnetAddr(const __pmSockAddr *, int);
PCP_CALL extern __pmSockAddr *__pmSockAddrNextSubnetAddr(__pmSockAddr *, int);
PCP_CALL extern __pmSockAddr *__pmHostEntGetSockAddr(const __pmHostEnt *, void **);
PCP_CALL extern __pmHostEnt * __pmHostEntAlloc(void);
PCP_CALL extern __pmHostEnt * __pmGetAddrInfo(const char *);
PCP_CALL extern void __pmHostEntFree(__pmHostEnt *);
PCP_CALL extern char * __pmHostEntGetName(__pmHostEnt *);

/* Hashed Data Structures for the Processing of Logs and Archives */
typedef struct __pmHashNode {
struct __pmHashNode *next;
Expand Down Expand Up @@ -752,6 +822,13 @@ PCP_CALL extern __pmContext *__pmHandleToPtr(int);
/* Like __pmHandleToPtr(pmWhichContext()), but with no locking */
PCP_CALL __pmContext *__pmCurrentContext(void);

/*
* Dump the current context (source details + instance profile),
* for a particular instance domain.
* If indom == PM_INDOM_NULL, then print all instance domains
*/
PCP_CALL extern void __pmDumpContext(FILE *, int, pmInDom);

/* pmFetch helper routines, hooks for derivations and local contexts */
PCP_CALL extern int __pmPrepareFetch(__pmContext *, int, const pmID *, pmID **);
PCP_CALL extern int __pmFinishResult(__pmContext *, int, pmResult **);
Expand Down Expand Up @@ -1178,6 +1255,12 @@ PCP_CALL extern void __pmSecureServerShutdown(void);
PCP_CALL extern int __pmSecureServerHandshake(int, int, __pmHashCtl *);
PCP_CALL extern int __pmSecureClientHandshake(int, int, const char *, __pmHashCtl *);

/* PDU or connection timeouts */
PCP_CALL extern double __pmConnectTimeout(void);
PCP_CALL extern int __pmSetConnectTimeout(double);
PCP_CALL extern double __pmRequestTimeout(void);
PCP_CALL extern int __pmSetRequestTimeout(double);

#ifdef __cplusplus
}
#endif
Expand Down
1 change: 1 addition & 0 deletions src/libpcp_pmda/src/root.c
Expand Up @@ -16,6 +16,7 @@

#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"
#include "pmda.h"
#include "pmdaroot.h"
#ifdef HAVE_SCHED_H
Expand Down
1 change: 1 addition & 0 deletions src/libpcp_trace/src/pdu.c
Expand Up @@ -16,6 +16,7 @@
#include <signal.h>
#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"
#include "trace.h"
#include "trace_dev.h"

Expand Down
1 change: 1 addition & 0 deletions src/libpcp_trace/src/trace.c
Expand Up @@ -18,6 +18,7 @@
#include <inttypes.h>
#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"

#if defined(HAVE_PTHREAD_H)
#include <pthread.h>
Expand Down
1 change: 1 addition & 0 deletions src/libpcp_web/src/http_client.c
Expand Up @@ -15,6 +15,7 @@
#include <ctype.h>
#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"
#include "pmhttp.h"
#include "http_client.h"
#include "http_parser.h"
Expand Down
1 change: 1 addition & 0 deletions src/pmdas/cisco/cisco.h
Expand Up @@ -24,6 +24,7 @@

#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"
#include "pmda.h"
#include "domain.h"

Expand Down
1 change: 1 addition & 0 deletions src/pmhostname/pmhostname.c
Expand Up @@ -15,6 +15,7 @@

#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"

static pmLongOptions longopts[] = {
PMAPI_OPTIONS_HEADER("Options"),
Expand Down
1 change: 1 addition & 0 deletions src/pmie/src/stomp.c
Expand Up @@ -15,6 +15,7 @@
#include <ctype.h>
#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"

static int stomp_connect(const char *hostname, int port);
static void stomp_disconnect(void);
Expand Down
1 change: 1 addition & 0 deletions src/telnet-probe/telnet-probe.c
Expand Up @@ -13,6 +13,7 @@

#include "pmapi.h"
#include "impl.h"
#include "libpcp.h"

int
main(int argc, char *argv[])
Expand Down

0 comments on commit b1d0e97

Please sign in to comment.