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");
  }
}
Beispiel #2
0
static int UnregisterAppWithWinSock (void *nlm_handle)
{
    if (!WSACleanupWithNLMHandle)
    {
        if (!(WSACleanupWithNLMHandle = ImportPublicObject(gLibHandle, "WSACleanupWithNLMHandle")))
            WSACleanupWithNLMHandle = wsa_cleanup_with_handle;
    }

    return (*WSACleanupWithNLMHandle)(nlm_handle);
}
Beispiel #3
0
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;
}