Example #1
0
int ooReleaseSndRTPPlugin(struct ooAppContext* context)
{
#ifdef _WIN32
   if(!FreeLibrary(media))
   {
      OOTRACEWARN2(context, "Warn: Failed to release the plugin");
      return OO_FAILED;
   }
   else
      OOTRACEINFO2(context, "INFO: Plugin released from memory");
#else
   if(dlclose(media) != 0)
   {
      OOTRACEWARN2(context, "Warn: Failed to release the plugin");
      return OO_FAILED;
   }
   else
      OOTRACEINFO2(context, "INFO: Plugin released from memory");
#endif
   media = 0;
   FuncPtr_InitializePlugin = 0;
   FuncPtr_CreateTxRTPChan = 0;
   FuncPtr_CloseTxRTPChan = 0;
   FuncPtr_CreateRecvRTPChan = 0;
   FuncPtr_CloseRecvRTPChan = 0;
   FuncPtr_StartTxWaveFile = 0;
   FuncPtr_StopTxWaveFile = 0;
   FuncPtr_StartTxMic = 0;
   FuncPtr_StopTxMic = 0;
   FuncPtr_StartRecvAndPlayback = 0;
   FuncPtr_StopRecvAndPlayback = 0;

   return OO_OK;
}
Example #2
0
BOOL CDlg_H323::OnInitDialog()
{
	CDialog::OnInitDialog();

	if(ooInitialize(&myContext,"H323.log",&HandleCommand) != OO_OK)
	{
		AfxMessageBox("\nH323Ep\tError in stack initialization");
		return FALSE;
	}
	// Setup TCP port range
	if(ooSetTCPPorts(myContext, 3020, 3060)!= OO_OK)
	  OOTRACEWARN2(myContext, "Warn: Error in setting TCP port range -"
							  " using default");
	// Setup UDP port range
	if(ooSetUDPPorts(myContext, 3080, 4020) != OO_OK)
	  OOTRACEWARN2(myContext, "Warn: Error in setting UDP port range -"
							  " using default");
	// Setup RTP port range
	if(ooSetRTPPorts(myContext, 4040, 4080) != OO_OK)
	  OOTRACEWARN2(myContext, "Warn: Error in setting RTP port range -"
							  " using default");

	LVCOLUMN col;
	col.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
	col.fmt = LVCFMT_LEFT;
	col.pszText = "名称";
	col.cx = 200;
	m_cParties.InsertColumn(0,&col);
	m_Imgs.Create(16,16,ILC_COLOR4,1,2);
	CBitmap bmp;
	bmp.LoadBitmap(IDR_MAIN_ICON_MAINFRAME);
	m_Imgs.Add(&bmp,RGB(0,0,0));
	m_cParties.SetImageList(&m_Imgs,LVSIL_SMALL);

	Loadini();

	if(m_bViaGK)
	{
		myContext->callByGK = TRUE;	
		RegistrationRequest();
	}

	//Listen for incoming call
	Listen();
	
	//create monitoring thread to monitor 
	m_hMonitorThread = CreateThread(0,0,&CH323MsgHandler::MsgMonitorProc,this,/*CREATE_SUSPENDED*/0,0);
	if(!m_hMonitorThread)
	{
		AfxMessageBox("H323消息监控线程创建失败");
		return FALSE;
	}

	return TRUE;  // return TRUE  unless you set the focus to a control
}
Example #3
0
int ooSocketGetInterfaceList(OOCTXT *pctxt, OOInterface **ifList)
{
   OOSOCKET sock;
   struct ifconf ifc;
   int ifNum;
   OOInterface *pIf=NULL;
   struct sockaddr_in sin;

   OOTRACEDBGA1("Retrieving local interfaces\n");
   if(ooSocketCreateUDP(&sock, 4)!= ASN_OK)
   {
      OOTRACEERR1("Error:Failed to create udp socket - "
                  "ooSocketGetInterfaceList\n");   
      return -1;
   }
#ifdef SIOCGIFNUM
   if(ioctl(sock, SIOCGIFNUM, &ifNum) >= 0)
   {
      OOTRACEERR1("Error: ioctl for ifNum failed\n");
      return -1;
   }
#else
   ifNum = 50;
#endif
 
   ifc.ifc_len = ifNum * sizeof(struct ifreq);
   ifc.ifc_req = (struct ifreq *)memAlloc(pctxt, ifNum *sizeof(struct ifreq));
   if(!ifc.ifc_req)
   {
      OOTRACEERR1("Error:Memory - ooSocketGetInterfaceList - ifc.ifc_req\n");
      return -1;
   }

   if (ioctl(sock, SIOCGIFCONF, &ifc) >= 0) {
      void * ifEndList = (char *)ifc.ifc_req + ifc.ifc_len;
      struct ifreq *ifName;
      struct ifreq ifReq;
      int flags;
      for (ifName = ifc.ifc_req; (void*)ifName < ifEndList; ifName++) {
         char *pName=NULL;
         char addr[50];
#ifdef ifr_netmask
	char mask[50];
#endif
         
         pIf = (struct OOInterface*)memAlloc(pctxt, sizeof(struct OOInterface));
         pName = (char*)memAlloc(pctxt, strlen(ifName->ifr_name)+1);
         if(!pIf)
         {
            OOTRACEERR1("Error:Memory - ooSocketGetInterfaceList - "
                        "pIf/pName\n");
            return -1;
         }
         OOTRACEDBGA2("\tInterface name: %s\n", ifName->ifr_name);
         
         
         strcpy(ifReq.ifr_name, ifName->ifr_name);
         strcpy(pName, ifName->ifr_name);
         pIf->name = pName;

         /* Check whether the interface is up*/
         if (ioctl(sock, SIOCGIFFLAGS, &ifReq) < 0) {
            OOTRACEERR2("Error:Unable to determine status of interface %s\n", 
                        pName);
            memFreePtr(pctxt, pIf->name);
            memFreePtr(pctxt, pIf);
            continue;
         }
         flags = ifReq.ifr_flags;
         if (!(flags & IFF_UP)) {
            OOTRACEWARN2("Warn:Interface %s is not up\n", pName);
            memFreePtr(pctxt, pIf->name);
            memFreePtr(pctxt, pIf);
            continue;
         }

         /* Retrieve interface address */
         if (ioctl(sock, SIOCGIFADDR, &ifReq) < 0) 
         {
            OOTRACEWARN2("Warn:Unable to determine address of interface %s\n", 
                          pName);
            memFreePtr(pctxt, pIf->name);
            memFreePtr(pctxt, pIf);
            continue;
         }
	 memcpy(&sin, &ifReq.ifr_addr, sizeof(struct sockaddr_in));
	 strcpy(addr, ast_inet_ntoa(sin.sin_addr));
         OOTRACEDBGA2("\tIP address is %s\n", addr);
         pIf->addr = (char*)memAlloc(pctxt, strlen(addr)+1);
         if(!pIf->addr)
         {
            OOTRACEERR1("Error:Memory - ooSocketGetInterfaceList - "
                        "pIf->addr\n");
            memFreePtr(pctxt, pIf->name);
            memFreePtr(pctxt, pIf);
            return -1;
         }
         strcpy(pIf->addr, addr);
         
#ifdef ifr_netmask
         if (ioctl(sock, SIOCGIFNETMASK, &ifReq) < 0) 
         {
            OOTRACEWARN2("Warn:Unable to determine mask for interface %s\n", 
                          pName);
            memFreePtr(pctxt, pIf->name);
            memFreePtr(pctxt, pIf->addr);
            memFreePtr(pctxt, pIf);
            continue;
         }
	 memcpy(&sin, &ifReq.ifr_netmask, sizeof(struct sockaddr_in));
	 strcpy(mask, ast_inet_ntoa(sin.sin_addr));
         OOTRACEDBGA2("\tMask is %s\n", mask);
         pIf->mask = (char*)memAlloc(pctxt, strlen(mask)+1);
         if(!pIf->mask)
         {
            OOTRACEERR1("Error:Memory - ooSocketGetInterfaceList - "
                        "pIf->mask\n");
            memFreePtr(pctxt, pIf->name);
            memFreePtr(pctxt, pIf->addr);
            memFreePtr(pctxt, pIf);
            return -1;
         }
         strcpy(pIf->mask, mask);
#endif
         pIf->next = NULL;

         /* Add to the list */
         if(!*ifList)
         {
            *ifList = pIf;
            pIf = NULL;
         }
         else{
            pIf->next = *ifList;
            *ifList = pIf;
            pIf=NULL;
         }
/*
#if defined(OO_FREEBSD) || defined(OO_OPENBSD) || defined(OO_NETBSD) || defined(OO_MACOSX) || defined(OO_VXWORKS) || defined(OO_RTEMS) || defined(OO_QNX)
#ifndef _SIZEOF_ADDR_IFREQ
#define _SIZEOF_ADDR_IFREQ(ifr) \
        ((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \
         (sizeof(struct ifreq) - sizeof(struct sockaddr) + \
          (ifr).ifr_addr.sa_len) : sizeof(struct ifreq))
#endif
      ifName = (struct ifreq *)((char *)ifName + _SIZEOF_ADDR_IFREQ(*ifName));
#else
      ifName++;
*/
      }

   }  
   return ASN_OK;
}