亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mtp3io.c

?? asterisk1.4.6版本下 7#信令驅動 源碼
?? C
字號:
/* mtp3d.c - mtp2/mtp3 daemon
 * Author: Anders Baekgaard <ab@dicea.dk>
 * This work is derived from chan_ss7, see copyright below.
 */

/*
 * This file is part of chan_ss7.
 *
 * chan_ss7 is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * chan_ss7 is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with chan_ss7; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/poll.h>
#include <sys/socket.h>

#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <fcntl.h>


#include "config.h"
#include "aststubs.h"
#include "mtp.h"
#include "transport.h"
#include "utils.h"
#include "mtp3io.h"

#undef inet_ntoa



static int setup_socket(int localport, int sockettype, int ipproto)
{
  struct sockaddr_in sock;
  in_addr_t addr = INADDR_ANY;
  int parm, res, flags;
  int s;

  memset(&sock, 0, sizeof(struct sockaddr_in));
  sock.sin_family = AF_INET;
  sock.sin_port = htons(localport);
  memcpy(&sock.sin_addr, &addr, sizeof(addr));

  s = socket(PF_INET, sockettype, ipproto);
  if (s < 0) {
    ast_log(LOG_ERROR, "Cannot create UDP socket, errno=%d: %s\n", errno, strerror(errno));
    return -1;
  }
  parm = 1;
  setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &parm, sizeof(int));

  res = fcntl(s, F_GETFL);
  if(res < 0) {
    ast_log(LOG_WARNING, "Could not obtain flags for socket fd: %s.\n", strerror(errno));
    return -1;
  }
  flags = res | O_NONBLOCK;
  res = fcntl(s, F_SETFL, flags);
  if(res < 0) {
    ast_log(LOG_WARNING, "Could not set socket fd non-blocking: %s.\n", strerror(errno));
    return -1;
  }

  if (bind(s, &sock, sizeof(sock)) < 0) {
    ast_log(LOG_ERROR, "Cannot bind receiver socket, errno=%d: %s\n", errno, strerror(errno));
    close(s);
    return -1;
  }
  if (sockettype != SOCK_DGRAM)
    if (listen(s, 8) < 0) {
      ast_log(LOG_ERROR, "Cannot listen on socket, errno=%d: %s\n", errno, strerror(errno));
      close(s);
      return -1;
    }
  return s;
}



int mtp3_setup_socket(int port, int schannel)
{
  return setup_socket(port + schannel, MTP3_SOCKETTYPE, MTP3_IPPROTO);
}


int mtp3_connect_socket(const char* host, const char* port)
{
  struct addrinfo hints;
  struct addrinfo *result, *rp;
  int s, res;

  memset(&hints, 0, sizeof(hints));
  hints.ai_family = AF_INET;
  hints.ai_socktype = MTP3_SOCKETTYPE;
  hints.ai_protocol = MTP3_IPPROTO;
  res = getaddrinfo(host, port, NULL, &result);
  if (res != 0) {
    ast_log(LOG_ERROR, "Invalid hostname/IP address '%s' or port '%s': %s.\n", host, port, gai_strerror(res)
	    );
    return -1;
  }
  for (rp = result; rp; rp = rp->ai_next) {
    /* This is not working for non TCP/UDP protocols:   res = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); */
    res = socket(rp->ai_family, hints.ai_socktype, hints.ai_protocol);
    if (res == -1)
      continue;
    if ((s = connect(res, rp->ai_addr, rp->ai_addrlen)) != -1)
      break;
    close(res);
  }
  if (rp == NULL) {
    ast_log(LOG_ERROR, "Could not connect to hostname/IP address '%s', port '%s': %s.\n", host, port, strerror(errno));
    res = -1;
  }
  freeaddrinfo(result);
  return res;
}


int mtp3_send(int s, const unsigned char* buff, unsigned int len)
{
  int res;
  do {
    res = write(s, buff, len);
    if (res < 0) {
      if (errno != EINTR)
	break;
    }
    else if (res > 0) {
      buff += res;
      len -= res;
    }
  } while (len > 0);
  if (res < 0) {
    ast_log(LOG_ERROR, "Cannot send mtp3 packet: %s\n", strerror(errno));
  }
  return res;
}

void mtp3_reply(int s, const unsigned char* buff, unsigned int len, const struct sockaddr* to, socklen_t tolen)
{
  printf("Send packet to %s:%d\n", inet_ntoa(((struct sockaddr_in*) to)->sin_addr), ntohs(((struct sockaddr_in*) to)->sin_port));
  int res;
  do {
    res = sendto(s, buff, len, 0, to, tolen);
    if (res < 0) {
      if (errno != EINTR)
	break;
    }
    else if (res > 0) {
      buff += res;
      len -= res;
    }
  } while (len > 0);
  if (res == -1)
    ast_log(LOG_ERROR, "Cannot send reply mtp3 packet: %s\n", strerror(errno));
}


int mtp3_register_isup(int s, int linkix)
{
  unsigned char buff[MTP_REQ_MAX_SIZE];
  struct mtp_req* req = (struct mtp_req *)buff;

  req->isup.link = NULL;
  req->isup.slink = NULL;
  req->typ = MTP_REQ_REGISTER_L4;
  req->regist.ss7_protocol = SS7_PROTO_ISUP;
  req->regist.host_ix = this_host->host_ix;
  req->regist.linkix = linkix;
  int res = write(s, buff, sizeof(*req));
  if (res < 0) {
    ast_log(LOG_ERROR, "Cannot send mtp3 packet: %s\n", strerror(errno));
  }
  return res;
}


int mtp3_register_sccp(int s, int subsystem, int linkix)
{
  unsigned char buff[MTP_REQ_MAX_SIZE];
  struct mtp_req* req = (struct mtp_req *)buff;

  req->isup.link = NULL;
  req->isup.slink = NULL;
  req->typ = MTP_REQ_REGISTER_L4;
  req->regist.ss7_protocol = SS7_PROTO_SCCP;
  req->regist.host_ix = this_host->host_ix;
  req->regist.linkix = linkix;
  req->regist.sccp.subsystem = subsystem;
  int res = write(s, buff, sizeof(*req));
  if (res < 0) {
    ast_log(LOG_ERROR, "Cannot send mtp3 packet: %s\n", strerror(errno));
  }
  return res;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品中文字幕| 久久免费美女视频| 91小视频免费观看| av亚洲产国偷v产偷v自拍| 国产99久久精品| 国产精品亚洲一区二区三区妖精| 国内成人自拍视频| 国产精品自拍av| 欧美视频三区在线播放| 欧美最猛黑人xxxxx猛交| 欧洲一区在线电影| 欧美嫩在线观看| 亚洲精品一区二区三区精华液| www一区二区| 国产精品久久久久影院老司| 亚洲精品日韩综合观看成人91| 一级日本不卡的影视| 日韩国产在线观看| 国产麻豆9l精品三级站| 91在线丨porny丨国产| 欧美专区亚洲专区| 精品国产一区二区三区av性色| 国产日韩综合av| 亚洲一区二区在线免费观看视频| 免费高清视频精品| 高清shemale亚洲人妖| 一本一道综合狠狠老| 在线综合亚洲欧美在线视频| 国产午夜精品一区二区 | 午夜视频一区在线观看| 日韩一区精品字幕| 高清在线观看日韩| 欧美日韩卡一卡二| 欧美国产一区二区| 天天色综合天天| a在线播放不卡| 91精品在线观看入口| 亚洲欧洲av在线| 毛片av中文字幕一区二区| 99视频热这里只有精品免费| 宅男噜噜噜66一区二区66| 中文字幕在线不卡| 久久精品久久精品| 欧美三级乱人伦电影| 欧美国产日韩一二三区| 日韩精品成人一区二区三区| 99久久精品免费| 久久天堂av综合合色蜜桃网| 亚洲成人av资源| 91最新地址在线播放| 久久久久久久久蜜桃| 日韩激情中文字幕| 欧美最猛黑人xxxxx猛交| 国产精品免费久久久久| 久久 天天综合| 欧美一级视频精品观看| 一区二区三区在线免费视频| 成人免费毛片片v| 久久久久国产精品厨房| 日韩电影一区二区三区| 欧美色网站导航| 一区av在线播放| 91农村精品一区二区在线| 国产精品天天摸av网| 国产一区在线不卡| 日韩欧美成人一区| 秋霞av亚洲一区二区三| 欧美日韩美少妇| 亚洲第一综合色| 欧美日韩国产综合一区二区| 亚洲午夜免费电影| 欧美亚洲另类激情小说| 亚洲第一电影网| 欧美裸体一区二区三区| 九一九一国产精品| 欧美一区二区福利在线| 奇米在线7777在线精品| 欧美一区日本一区韩国一区| 性欧美疯狂xxxxbbbb| 91精品国产乱码久久蜜臀| 日本美女一区二区| 精品国产亚洲在线| 国产东北露脸精品视频| 国产精品视频一二三区| 91丝袜美腿高跟国产极品老师 | 久久久久国产精品麻豆| 欧美性大战久久| 五月婷婷激情综合| 日韩一卡二卡三卡| 国产剧情在线观看一区二区| 中文在线资源观看网站视频免费不卡 | 国产精品久久网站| 一本一道波多野结衣一区二区| 国产91清纯白嫩初高中在线观看| 久久久99免费| 91视频在线观看| 五月天网站亚洲| 久久亚洲影视婷婷| 91视频一区二区| 天堂影院一区二区| 久久久久久99久久久精品网站| 成人久久18免费网站麻豆| 亚洲高清免费在线| 精品国产麻豆免费人成网站| 99精品视频中文字幕| 图片区小说区国产精品视频| 久久免费偷拍视频| 在线观看免费视频综合| 久久精品国产99久久6| 国产精品久久三区| 欧美一卡二卡在线观看| 成人国产精品免费观看| 日韩精彩视频在线观看| 国产精品麻豆网站| 日韩欧美成人一区二区| 91九色02白丝porn| 国产一区欧美二区| 亚洲444eee在线观看| 欧美韩国一区二区| 日韩视频不卡中文| 色av成人天堂桃色av| 国产精品一二三区在线| 亚洲午夜激情av| 国产精品久久午夜| 久久久精品天堂| 欧美日韩国产123区| 成人精品视频一区二区三区尤物| 日本免费新一区视频| 亚洲专区一二三| 中文字幕一区视频| 国产日韩精品视频一区| 欧美成人一区二区三区片免费 | 色悠悠久久综合| 国产成人精品综合在线观看| 美女网站色91| 日韩精品每日更新| 亚洲国产精品一区二区尤物区| 国产精品亲子乱子伦xxxx裸| 久久青草国产手机看片福利盒子| 91精品国产综合久久福利软件 | 久久久久久久久久久黄色| 欧美人妇做爰xxxⅹ性高电影| 色综合一区二区| 一本在线高清不卡dvd| a级高清视频欧美日韩| 成人做爰69片免费看网站| 国产综合色视频| 国内精品视频666| 国产在线精品视频| 国产一区二区三区在线观看精品| 日韩成人精品在线观看| 日本特黄久久久高潮| 日日夜夜精品视频免费| 日本在线观看不卡视频| 日本aⅴ亚洲精品中文乱码| 看电影不卡的网站| 国产一区亚洲一区| 成人性生交大片免费看中文网站| 成人在线视频一区二区| 99久久er热在这里只有精品15| 成人亚洲一区二区一| 91色.com| 欧美日韩国产小视频| 日韩午夜激情电影| 久久久久9999亚洲精品| 国产精品久久久久久久蜜臀 | 国产一区在线看| 成人久久18免费网站麻豆| 91亚洲国产成人精品一区二三| 91偷拍与自偷拍精品| 精品视频一区二区三区免费| 日韩欧美在线一区二区三区| 国产亚洲综合av| 一区二区三区小说| 日韩电影一二三区| 国产aⅴ综合色| 91美女视频网站| 欧美一区二区黄色| 中文字幕不卡的av| 午夜伊人狠狠久久| 国产伦精品一区二区三区免费迷 | 日产欧产美韩系列久久99| 久久99精品久久久| 99久久婷婷国产综合精品| 911国产精品| 久久精品欧美日韩精品| 亚洲一区二区视频| 国产在线精品一区二区三区不卡| 色婷婷综合久久久久中文一区二区 | 欧美午夜视频网站| 久久午夜老司机| 又紧又大又爽精品一区二区| 成人免费视频视频在线观看免费| 色婷婷亚洲一区二区三区| 日韩精品一区二区三区中文不卡| 中文字幕免费在线观看视频一区| 亚洲成人av在线电影| 成人高清视频免费观看| 日韩欧美国产三级电影视频| 一区二区欧美国产|