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; }
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 }
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; }