16 #include "libComAPI.h"
28 LIBCOM_API
extern int asCheckClientIP;
30 typedef struct asgMember *ASMEMBERPVT;
31 typedef struct asgClient *ASCLIENTPVT;
32 typedef int (*ASINPUTFUNCPTR)(
char *buf,
int max_size);
38 typedef void (*ASCLIENTCALLBACK) (ASCLIENTPVT,asClientStatus);
44 #define asCheckGet(asClientPvt) \
45 (!asActive || ((asClientPvt)->access >= asREAD))
46 #define asCheckPut(asClientPvt) \
47 (!asActive || ((asClientPvt)->access >= asWRITE))
55 #define asTrapWriteWithData(asClientPvt, user, host, addr, type, count, data) \
56 ((asActive && (asClientPvt)->trapMask) \
57 ? asTrapWriteBeforeWithData((user), (host), (addr), (type), (count), (data)) \
59 #define asTrapWriteAfter(pvt) \
60 if (pvt) asTrapWriteAfterWrite(pvt)
67 #define asTrapWriteBefore(asClientPvt, user, host, addr) \
68 asTrapWriteWithData(asClientPvt, user, host, addr, 0, 0, NULL)
71 LIBCOM_API
long epicsStdCall asInitialize(ASINPUTFUNCPTR inputfunction);
72 LIBCOM_API
long epicsStdCall asInitFile(
73 const char *filename,
const char *substitutions);
74 LIBCOM_API
long epicsStdCall asInitFP(FILE *fp,
const char *substitutions);
75 LIBCOM_API
long epicsStdCall asInitMem(
const char *acf,
const char *substitutions);
77 LIBCOM_API
long epicsStdCall asAddMember(
78 ASMEMBERPVT *asMemberPvt,
const char *asgName);
79 LIBCOM_API
long epicsStdCall asRemoveMember(ASMEMBERPVT *asMemberPvt);
81 LIBCOM_API
long epicsStdCall asChangeGroup(
82 ASMEMBERPVT *asMemberPvt,
const char *newAsgName);
83 LIBCOM_API
void * epicsStdCall asGetMemberPvt(ASMEMBERPVT asMemberPvt);
84 LIBCOM_API
void epicsStdCall asPutMemberPvt(
85 ASMEMBERPVT asMemberPvt,
void *userPvt);
87 LIBCOM_API
long epicsStdCall asAddClient(
88 ASCLIENTPVT *asClientPvt,ASMEMBERPVT asMemberPvt,
89 int asl,
const char *user,
char *host);
91 LIBCOM_API
long epicsStdCall asChangeClient(
92 ASCLIENTPVT asClientPvt,
int asl,
const char *user,
char *host);
93 LIBCOM_API
long epicsStdCall asRemoveClient(ASCLIENTPVT *asClientPvt);
94 LIBCOM_API
void * epicsStdCall asGetClientPvt(ASCLIENTPVT asClientPvt);
95 LIBCOM_API
void epicsStdCall asPutClientPvt(
96 ASCLIENTPVT asClientPvt,
void *userPvt);
97 LIBCOM_API
long epicsStdCall asRegisterClientCallback(
98 ASCLIENTPVT asClientPvt, ASCLIENTCALLBACK pcallback);
99 LIBCOM_API
long epicsStdCall asComputeAllAsg(
void);
103 LIBCOM_API
long epicsStdCall asCompute(ASCLIENTPVT asClientPvt);
104 LIBCOM_API
int epicsStdCall asDump(
105 void (*memcallback)(ASMEMBERPVT,FILE *),
106 void (*clientcallback)(ASCLIENTPVT,FILE *),
int verbose);
107 LIBCOM_API
int epicsStdCall asDumpFP(FILE *fp,
108 void (*memcallback)(ASMEMBERPVT,FILE *),
109 void (*clientcallback)(ASCLIENTPVT,FILE *),
int verbose);
110 LIBCOM_API
int epicsStdCall asDumpUag(
const char *uagname);
111 LIBCOM_API
int epicsStdCall asDumpUagFP(FILE *fp,
const char *uagname);
112 LIBCOM_API
int epicsStdCall asDumpHag(
const char *hagname);
113 LIBCOM_API
int epicsStdCall asDumpHagFP(FILE *fp,
const char *hagname);
114 LIBCOM_API
int epicsStdCall asDumpRules(
const char *asgname);
115 LIBCOM_API
int epicsStdCall asDumpRulesFP(FILE *fp,
const char *asgname);
116 LIBCOM_API
int epicsStdCall asDumpMem(
const char *asgname,
117 void (*memcallback)(ASMEMBERPVT,FILE *),
int clients);
118 LIBCOM_API
int epicsStdCall asDumpMemFP(FILE *fp,
const char *asgname,
119 void (*memcallback)(ASMEMBERPVT,FILE *),
int clients);
120 LIBCOM_API
int epicsStdCall asDumpHash(
void);
121 LIBCOM_API
int epicsStdCall asDumpHashFP(FILE *fp);
123 LIBCOM_API
void * epicsStdCall asTrapWriteBeforeWithData(
124 const char *userid,
const char *hostid,
void *addr,
125 int dbrType,
int no_elements,
void *data);
127 LIBCOM_API
void epicsStdCall asTrapWriteAfterWrite(
void *pvt);
129 #define S_asLib_clientsExist (M_asLib| 1)
130 #define S_asLib_noUag (M_asLib| 2)
131 #define S_asLib_noHag (M_asLib| 3)
132 #define S_asLib_noAccess (M_asLib| 4)
133 #define S_asLib_noModify (M_asLib| 5)
134 #define S_asLib_badConfig (M_asLib| 6)
135 #define S_asLib_badCalc (M_asLib| 7)
136 #define S_asLib_dupAsg (M_asLib| 8)
137 #define S_asLib_InitFailed (M_asLib| 9)
138 #define S_asLib_asNotActive (M_asLib|10)
139 #define S_asLib_badMember (M_asLib|11)
140 #define S_asLib_badClient (M_asLib|12)
141 #define S_asLib_badAsg (M_asLib|13)
142 #define S_asLib_noMemory (M_asLib|14)
145 LIBCOM_API
extern int asActive;
148 typedef enum{asNOACCESS,asREAD,asWRITE} asAccessRights;
153 typedef struct asBase{
157 struct gphPvt *phash;
160 LIBCOM_API
extern volatile ASBASE *pasbase;
191 #define AS_TRAP_WRITE 1
194 asAccessRights access;
196 unsigned long inpUsed;
219 unsigned long inpBad;
220 unsigned long inpChanged;
222 typedef struct asgMember {
230 typedef struct asgClient {
236 ASCLIENTCALLBACK pcallback;
238 asAccessRights access;
242 LIBCOM_API
long epicsStdCall asComputeAsg(
ASG *pasg);
244 LIBCOM_API
void * epicsStdCall asCalloc(
size_t nobj,
size_t size);
245 LIBCOM_API
char * epicsStdCall asStrdup(
unsigned char *str);
246 LIBCOM_API
void asFreeAll(
ASBASE *pasbase);
Functions for interacting with the errlog task.
A doubly-linked list library.