typedef struct sastate {
SOCKET sdUDP;
SOCKET sdTCP;
SOCKET sdReg;
SOCKET sdMax;
fd_set fds;
struct sockaddr_in sin;
char *pcSAHost;
char *pcSANumAddr;
struct in_addr *pina;
SAStore store;
DATable *pdat;
int iTraceMode;
struct timeval tvTimeout;
#ifdef EXTRA_MSGS
char *pcSAURL;
void *pvMutex;
#endif
#ifdef MAC_OS_X
char *pcDAURL;
long statelessBootTime;
char *pcSPIList;
#endif
} SAState;
typedef struct MslpdResources {
void *pvMutex;
SOCKET sdTCP;
SOCKET sdUDP;
} MslpdResources;
bool IsProcessTerminated( void );
SLPBoolean AreWeADirectoryAgent( void );
extern EXPORT void InitializeSLPdSystemConfigurator( void );
extern EXPORT int StartSLPDAAdvertiser( SAState* psa );
extern EXPORT void StopSLPDAAdvertiser( void );
extern EXPORT void InitializeSLPDARegisterer( SLPHandle serverState );
extern EXPORT void RegisterAllServicesWithDA( SLPHandle serverState, struct sockaddr_in sinDA, const char *pcScopes );
extern EXPORT void RegisterAllServicesWithKnownDAs( SLPHandle serverState );
extern EXPORT void propogate_all_advertisements(SAState *psa);
extern EXPORT void propogate_registration( SAState *psa, const char* lang, const char* srvtype, const char* url, const char* scopeList, const char* attrlist, int life );
extern EXPORT void propogate_deregistration( SAState *psa, const char* lang, const char* srvtype, const char* url, const char* scopeList, const char* attrlist, int life );
void delete_regfile(const char *pcFile);
SLPInternalError process_regfile(SAStore *, const char *);
long GetCurrentTime( void );
long GetStatelessBootTime( void );
void TurnOnDA( void );
void TurnOffDA( void );
void InitSLPRegistrar( void );
void TearDownSLPRegistrar( void );
void ResetStatelessBootTime( void );
extern SLPReturnError HandleRegistration( const char* pcInBuf, int iInSz, struct sockaddr_in* sinIn );
extern SLPReturnError HandleDeregistration( const char* pcInBuf, int iInSz, struct sockaddr_in* sinIn );
extern SLPReturnError DAHandleRequest( SAState *psa, struct sockaddr_in* sinIn, SLPBoolean viaTCP, Slphdr *pslphdr, const char *pcInBuf, int iInSz, char **ppcOutBuf, int *piOutSz, int *piGot );
#ifdef MAC_OS_X
extern char* MakeDAAdvertisementMessage( Slphdr* pslph, char* url,
const char* scopeList,
const char* attributeList,
long timeStamp,
int* outSize );
#endif // MAC_OS_X
extern SLPInternalError mslpd_init_network(SAState *);
extern char * serialize_values(SAStore *pstore, int item, int attr);
extern SLPInternalError propogate_registrations( SAState *pstate,
struct sockaddr_in sinDA,
const char *pcScopes);
extern SLPInternalError propogate_registration_with_DA(SAState *pstate, struct sockaddr_in sinDA, const char *lang, const char *url, const char *srvtype, const char *scope, const char *attrlist, int life );
extern SLPInternalError propogate_deregistration_with_DA(SAState *pstate, struct sockaddr_in sinDA, const char *lang, const char *url, const char *srvtype, const char *scope, const char *attrlist, int life );
extern SLPInternalError srvdereg_out(const char *pcLang, const char *pcURL,
const char *pcSrvType, const char *pcScope,
const char *pcAttrList, int iLifetime,
char **ppcOutBuf, int *piOutSz);
extern void mslpd_daadvert_callback( SLPHandle hSLP,
int iErrCode,
struct sockaddr_in sin,
const char *pcScopeList,
const char *pcAttrs,
long lBootTime,
void *pvUser);
extern int store_request( SAState *psa,
SLPBoolean viaTCP,
Slphdr *pslphdr,
const char *pcInBuf,
int iInSz,
char **ppcOutBuf,
int *piOutSz,
int *piNumResults);
extern int isWildMatch(const char *pcQuery, const char *pcString);
extern int on_PRList(SAState *psa, char *pcPRList);
extern int match_langtag(const char *pc1, const char *pc2);
extern int match_srvtype(const char *pcstRqst, const char *pcstStore);
#ifdef EXTRA_MSGS
extern int opt_tag_list_includes(const char *pcTagList,
const char *pcTag);
extern int opt_attr_request(SAState *psa, Slphdr *pslphdr, const char *pcInBuf,
int iInSz, char **ppcOutBuf, int *piOutSz, int *piGot);
extern int opt_type_request(SAState *psa, Slphdr *pslphdr, const char *pcInBuf,
int iInSz, char **ppcOutBuf, int *piOutSz, int *piGot);
#endif