void netware_reg_user(const char *ip, const char *user, const char *application) { PMUR usage_request; long licRequestErrCode = 0; long storeMeterInfoErrCode = 0; long nlsMeterErrCode = 0; /* import the symbol */ usage_request= ((PMUR)ImportPublicObject(getnlmhandle(), "PMMeteredUsageRequest")); if (usage_request != NULL) { unsigned long iaddr; char addr[NLS_IPX_ADDR_SIZE]; /* create address */ iaddr = htonl(inet_addr(ip)); bzero(addr, NLS_IPX_ADDR_SIZE); memcpy(addr, &iaddr, NLS_IP_ADDR_SIZE); /* call to NLS */ usage_request(user, PM_USERINFO_TYPE_ADDRESS, application, NLS_TRAN_TYPE_IP, addr, PM_FLAGS_METER_ONLY, &licRequestErrCode, &storeMeterInfoErrCode, &nlsMeterErrCode); /* release symbol */ UnImportPublicObject(getnlmhandle(), "PMMeteredUsageRequest"); } }
static int UnregisterAppWithWinSock (void *nlm_handle) { if (!WSACleanupWithNLMHandle) { if (!(WSACleanupWithNLMHandle = ImportPublicObject(gLibHandle, "WSACleanupWithNLMHandle"))) WSACleanupWithNLMHandle = wsa_cleanup_with_handle; } return (*WSACleanupWithNLMHandle)(nlm_handle); }
static int RegisterAppWithWinSock (void *nlm_handle) { int err; WSADATA wsaData; WORD wVersionRequested = MAKEWORD(WSAHighByte, WSALowByte); if (!WSAStartupWithNLMHandle) { if (!(WSAStartupWithNLMHandle = ImportPublicObject(gLibHandle, "WSAStartupWithNLMHandle"))) WSAStartupWithNLMHandle = wsa_startup_with_handle; } err = (*WSAStartupWithNLMHandle)(wVersionRequested, &wsaData, nlm_handle); if (LOBYTE(wsaData.wVersion) != WSAHighByte || HIBYTE(wsaData.wVersion) != WSALowByte) { UnregisterAppWithWinSock (nlm_handle); return APR_EEXIST; } return err; }