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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? config.c

?? asterisk 的7號信令處理模塊
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* config.c - chan_ss7 configuration * * Copyright (C) 2006, Sifira A/S. * * Author: Anders Baekgaard <ab@sifira.dk> *         Anders Baekgaard <ab@dicea.dk> * * 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 <errno.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include <time.h>#include <sys/param.h>#include <arpa/inet.h>#include <sys/socket.h>#include <unistd.h>#include <fcntl.h>#include <netdb.h>#include <netinet/in.h>#include <pthread.h>#include <signal.h>#include <sys/poll.h>#include <sys/ioctl.h>#include "asterisk/config.h"#include "asterisk/logger.h"#include "asterisk/strings.h"#include "config.h"int is_mtp3d = 0;struct host* this_host;int n_linksets;struct linkset linksets[MAX_LINKSETS];int n_links;struct link links[MAX_LINKS];int n_hosts;struct host hosts[MAX_HOSTS];int clusterlistenport;int is_combined_linkset(struct linkset* ls1, struct linkset* ls2){  if (ls1 == ls2)    return 1;  if ((ls1->combined && *ls1->combined) && ls2->combined &&      (strcmp(ls1->combined, ls2->combined) == 0))    return 1;  return 0;}/* Lookup linkset for destination point code */struct linkset* find_linkset_for_dpc(int pc, int cic){  int i;  for (i = 0; i < n_linksets; i++)    if ((linksets[i].dpc == pc) && (cic >= linksets[i].first_cic) && (cic <= linksets[i].last_cic))      return &linksets[i];  return NULL;}struct linkset* lookup_linkset(char* name) {  int i;  for (i = 0; i < n_linksets; i++) {    if (!strcmp(linksets[i].name, name))      return &linksets[i];  }  return NULL;}static struct link* lookup_link(char* name) {  int i;  for (i = 0; i < n_links; i++) {    if (!strcmp(links[i].name, name))      return &links[i];  }  return NULL;}static struct host* lookup_host(char* name) {  int i;  for (i = 0; i < n_hosts; i++)    if (!strcmp(hosts[i].name, name))      return &hosts[i];  return NULL;}struct host* lookup_host_by_addr(struct in_addr addr){  int i, j;  for (i = 0; i < n_hosts; i++)    for (j = 0; j < hosts[i].n_ifs; j++)      if (memcmp(&hosts[i].ifs[j].addr, &addr, sizeof(addr)) == 0)	return &hosts[i];  return NULL;}struct host* lookup_host_by_id(int hostix){  if (hostix >= n_hosts)    return NULL;  return &hosts[hostix];}static int make_host_schannels(void){  int k;  struct link* llink = NULL;  if (this_host->n_spans == 0) {    ast_log(LOG_ERROR, "No links defined in configuration for host '%s'.\n", this_host->name);    return -1;  }  for (k = 0; k < this_host->n_spans; k++) {    struct link* link = this_host->spans[k].link;    int connector = this_host->spans[k].connector;    link->first_zapid = (connector-1) * 32 - (connector-1);    if (link->enabled) {      llink = link;      if ((link->schannel > 0) && (!link->remote))	this_host->schannels[this_host->n_schannels++] = link;    }  }  if (!llink) {    ast_log(LOG_ERROR, "No links enabled on host '%s'.\n", this_host->name);    return -1;  }  return 0;}static struct host* find_my_host(void){  struct host* host;  char buf[128];  gethostname(buf, sizeof(buf)-1);  if ((host = lookup_host(buf)) == NULL) {    ast_log(LOG_ERROR, "Unable to find host configuration for host '%s'.\n", buf);  }  return host;}static void show_config(void){  int i;  for (i = 0; i < n_hosts; i++) {    ast_log(LOG_DEBUG, "Host %s, links %d, ifs %d\n", hosts[i].name, hosts[i].n_spans, hosts[i].n_ifs);  }}static int load_config_linkset(struct ast_config *cfg, char* cat){  struct ast_variable *v;  char *context = "default";  char *language = "";  char *linkset_name = &cat[strlen("linkset-")];  struct linkset* linkset = &linksets[n_linksets];  int has_enabled = 0, has_context = 0, has_language = 0, has_hunt_policy = 0, has_use_connect = 0, has_enable_st = 0, has_subservice = 0;  int i;  if (n_linksets == MAX_LINKSETS) {    ast_log(LOG_ERROR, "Too many linksets defined. Max %d\n", MAX_LINKSETS);    return -1;  }  linkset->t35_value = 15000;  linkset->t35_action = 0;  linkset->context = NULL;  linkset->language = NULL;  linkset->n_schannels = 0;  linkset->dpc = 0;  linkset->dni_chunk_limit = 0;  linkset->loadshare = LOADSHARE_COMBINED_LINKSET;  linkset->inservice = 0;  linkset->combined = 0;  context = "default";  language = "";  v = ast_variable_browse(cfg, cat);  while(v != NULL) {    if(0 == strcasecmp(v->name, "context")) {      context = v->value;      has_context = 1;    } else if(0 == strcasecmp(v->name, "language")) {      language = v->value;      has_language = 1;    } else if(0 == strcasecmp(v->name, "combined")) {      strcpy(linkset->combined, v->value);    }    else if(0 == strcasecmp(v->name, "hunting_policy")) {      if(0 == strcasecmp(v->value, "odd_lru")) {	linkset->hunt_policy = HUNT_ODD_LRU;      } else if(0 == strcasecmp(v->value, "even_mru")) {	linkset->hunt_policy = HUNT_EVEN_MRU;      } else if(0 == strcasecmp(v->value, "seq_lth")) {	linkset->hunt_policy = HUNT_SEQ_LTH;      } else if(0 == strcasecmp(v->value, "seq_htl")) {	linkset->hunt_policy = HUNT_SEQ_HTL;      } else {	ast_log(LOG_ERROR, "Error invalid hunting policy '%s'.\n", v->value);	return -1;      }      has_hunt_policy = 1;    } else if(0 == strcasecmp(v->name, "enabled")) {      if ((strcasecmp(v->value, "yes") != 0) && (strcasecmp(v->value, "no") != 0)) {	ast_log(LOG_ERROR, "Invalid value '%s' for enabled entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }      linkset->enabled = strcasecmp(v->value, "yes") == 0;      has_enabled = 1;    } else if(0 == strcasecmp(v->name, "use_connect")) {      if ((strcasecmp(v->value, "yes") != 0) && (strcasecmp(v->value, "no") != 0)) {	ast_log(LOG_ERROR, "Invalid value '%s' for use_connect entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }      linkset->use_connect = strcasecmp(v->value, "yes") == 0;      has_use_connect = 1;    } else if(0 == strcasecmp(v->name, "enable_st")) {      if ((strcasecmp(v->value, "yes") != 0) && (strcasecmp(v->value, "no") != 0)) {	ast_log(LOG_ERROR, "Invalid value '%s' for enable_st entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }      linkset->enable_st = strcasecmp(v->value, "yes") == 0;      has_enable_st = 1;    } else if(0 == strcasecmp(v->name, "subservice")) {      if (strcasecmp(v->value, "auto") == 0) {	linkset->subservice = -1;      }      else if (strcasecmp(v->value, "international") == 0) {	linkset->subservice = 0;      }      else if (strcasecmp(v->value, "national") == 0) {	linkset->subservice = 0x8;      }      else if(sscanf(v->value, "%i", &linkset->subservice) == 1) {}      else {	ast_log(LOG_ERROR, "Invalid value '%s' for subservice entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }      has_subservice = 1;    } else if(0 == strcasecmp(v->name, "loadshare")) {      if (strcasecmp(v->value, "none") == 0) {	linkset->loadshare = LOADSHARE_NONE;      }      else if (strcasecmp(v->value, "linkset") == 0) {	linkset->loadshare = LOADSHARE_LINKSET;      }      else if (strcasecmp(v->value, "combined") == 0) {	linkset->loadshare = LOADSHARE_COMBINED_LINKSET;      }      else {	ast_log(LOG_ERROR, "Invalid value '%s' for loadshare entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }    } else if(0 == strcasecmp(v->name, "t35")) {      char action_buf[100];      if(sscanf(v->value, "%d,%s", &linkset->t35_value, action_buf) != 2) {	ast_log(LOG_ERROR, "Invalid synax in '%s' for t35 entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }      if (strcasecmp(action_buf, "st") == 0)	linkset->t35_action = 1;      else if (strcasecmp(action_buf, "timeout") == 0)	linkset->t35_action = 0;      else {	ast_log(LOG_ERROR, "Invalid t35 action '%s'.\n", action_buf);	return -1;      }    } else if(0 == strcasecmp(v->name, "dni_chunk_limit")) {      if(sscanf(v->value, "%d", &linkset->dni_chunk_limit) != 1) {	ast_log(LOG_ERROR, "Invalid synax in '%s' for dni_chunk_limit entry for linkset '%s'.\n", v->value, linkset_name);	return -1;      }      if (linkset->dni_chunk_limit < 0 || linkset->dni_chunk_limit > 99) {        ast_log(LOG_ERROR, "Invalid value '%s' for config option '%s', aborting.\n", v->value, v->name);        return -1;      }    } else {      ast_log(LOG_ERROR, "Unknown config option '%s', aborting.\n", v->name);      return -1;    }        v = v->next;  }  if (!has_hunt_policy) {    ast_log(LOG_ERROR, "Missing hunt_policy entry for linkset '%s'\n", linkset_name);    return -1;  }  if (!has_enabled) {    ast_log(LOG_ERROR, "Missing enabled entry for linkset '%s'\n", linkset_name);    return -1;  }  if (!has_use_connect) {    ast_log(LOG_ERROR, "Missing use_connect entry for linkset '%s'\n", linkset_name);    return -1;  }  if (!has_enable_st) {    ast_log(LOG_ERROR, "Missing enable_st entry for linkset '%s'\n", linkset_name);    return -1;  }  if (!has_subservice) {    ast_log(LOG_ERROR, "Missing subservice entry for linkset '%s'\n", linkset_name);    return -1;  }  linkset->context = strdup(context);  linkset->language = strdup(language);  if (!has_context)    ast_log(LOG_NOTICE, "Using default context '%s' for linkset '%s'\n", linkset->context, linkset_name);  if (!has_language)    ast_log(LOG_NOTICE, "Using default language '%s' for linkset '%s'\n", linkset->language, linkset_name);  linkset->name = strdup(linkset_name);  linkset->n_links = 0;  linkset->lsi = n_linksets;  linkset->init_grs_done = 0;  linkset->first_cic = MAX_CIC;  linkset->last_cic = 0;  linkset->init_grs_done = 0;  linkset->idle_list = NULL;  for (i = 0; i < MAX_CIC; i++)    linkset->cic_list[i] = NULL;  n_linksets++;  return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区免费观看| 色综合久久六月婷婷中文字幕| 国产午夜精品理论片a级大结局 | 最新不卡av在线| 欧美伦理影视网| 豆国产96在线|亚洲| 天堂一区二区在线| 中文字幕欧美一区| 精品国一区二区三区| 欧美色图天堂网| 99久久综合99久久综合网站| 蜜臀国产一区二区三区在线播放 | 一区二区三区国产豹纹内裤在线| 日韩欧美成人午夜| 在线观看国产日韩| 成人av电影在线播放| 韩国av一区二区三区| 日韩精品免费专区| 亚洲午夜日本在线观看| 国产精品美女久久久久久久 | 国产风韵犹存在线视精品| 午夜精品久久久久久| 亚洲精品免费在线播放| 国产精品伦一区| 精品国产一区二区精华| 欧美一区二区三区四区视频| 欧美日韩视频在线观看一区二区三区| 粉嫩久久99精品久久久久久夜| 久久er99热精品一区二区| 天天操天天综合网| 亚洲国产色一区| 一区二区三区在线影院| 亚洲区小说区图片区qvod| 中文字幕成人在线观看| 久久久激情视频| 久久精品在线免费观看| 久久欧美一区二区| 精品国产一区二区三区忘忧草| 欧美精品777| 91精品国产一区二区三区蜜臀| 精品视频一区二区不卡| 欧美美女网站色| 欧美一区二区在线看| 91精品麻豆日日躁夜夜躁| 欧美一区二区视频免费观看| 欧美一区二区三区人| 日韩精品专区在线| 精品国产乱码久久久久久夜甘婷婷 | 国产很黄免费观看久久| 成人视屏免费看| 成人av免费网站| 色综合一个色综合亚洲| 在线一区二区三区做爰视频网站| 欧美亚洲丝袜传媒另类| 在线播放国产精品二区一二区四区| 欧美女孩性生活视频| 91精品一区二区三区在线观看| 日韩视频免费直播| 久久久午夜电影| 中文字幕一区二区视频| 一区二区三区四区视频精品免费 | 久久综合色播五月| 欧美国产成人精品| 一区二区三区高清在线| 丝袜脚交一区二区| 国产精品一区免费在线观看| 波多野结衣在线aⅴ中文字幕不卡| 97精品超碰一区二区三区| 欧美丝袜丝交足nylons| 日韩欧美一级特黄在线播放| 日本一区二区高清| 亚洲成av人片在线观看| 狠狠色丁香婷综合久久| 91日韩精品一区| 欧美一区三区四区| 中文字幕一区二区三区蜜月| 午夜久久福利影院| 国产成人一区在线| 欧美四级电影在线观看| 国产午夜久久久久| 亚洲第一久久影院| 国产高清久久久久| 欧美日韩国产系列| 国产精品素人一区二区| 亚洲国产视频a| 国产成人免费av在线| 欧美日韩一区二区在线观看 | 精品久久久久99| 亚洲欧洲一区二区三区| 日本亚洲免费观看| eeuss鲁片一区二区三区在线看| 欧美羞羞免费网站| 欧美国产精品v| 麻豆成人免费电影| 99精品久久免费看蜜臀剧情介绍| 日韩一卡二卡三卡| 亚洲一区二区三区四区在线免费观看 | 国产欧美一区二区精品性| 亚洲国产精品视频| 国产成人自拍在线| 欧美一区二区三区免费大片| 综合在线观看色| 国产99精品视频| 日韩三级av在线播放| 亚洲国产成人91porn| 成人av资源下载| 精品国精品自拍自在线| 天天操天天干天天综合网| av不卡在线观看| 久久精品视频在线看| 蜜臂av日日欢夜夜爽一区| 欧美日韩免费视频| 亚洲黄色片在线观看| 波多野结衣亚洲| 中文一区在线播放| 国产大片一区二区| 久久影院视频免费| 久久精品噜噜噜成人av农村| 欧美片网站yy| 亚洲国产日日夜夜| 欧美在线不卡视频| 一区二区三区日韩精品| av欧美精品.com| 中文字幕av一区二区三区免费看| 激情综合网天天干| 91精品国产91久久久久久最新毛片| 亚洲一区精品在线| 欧美亚洲高清一区二区三区不卡| 亚洲乱码中文字幕综合| 91网站最新地址| 亚洲色图都市小说| 91女厕偷拍女厕偷拍高清| 国产精品国产三级国产aⅴ原创| 国产高清不卡一区二区| 久久久久久久久99精品| 国产精品系列在线播放| 国产色婷婷亚洲99精品小说| 国产成人精品1024| 蓝色福利精品导航| 日韩区在线观看| 久久99精品久久久久久国产越南 | 色综合天天综合网天天狠天天| 国产精品嫩草影院com| 成人午夜电影久久影院| 亚洲欧洲av色图| 99亚偷拍自图区亚洲| 亚洲欧美国产三级| 在线影院国内精品| 香蕉乱码成人久久天堂爱免费| 欧美精品日韩综合在线| 免费成人性网站| 精品处破学生在线二十三| 国产福利一区二区三区视频| 中文字幕中文在线不卡住| 色视频成人在线观看免| 午夜国产精品一区| 精品成人一区二区三区四区| 国产酒店精品激情| 亚洲天堂福利av| 欧美日韩亚洲丝袜制服| 精品一区二区三区免费播放| 亚洲国产精品99久久久久久久久| 99精品欧美一区二区三区综合在线| 一区二区视频免费在线观看| 欧美日韩www| 国产九色精品成人porny| 综合分类小说区另类春色亚洲小说欧美| 一本久道久久综合中文字幕 | 欧美成人猛片aaaaaaa| 国产91精品一区二区麻豆亚洲| 亚洲欧美日韩系列| 91精品福利在线一区二区三区| 国产精品99久久久| 亚洲精品成人a在线观看| 欧美一区二区久久久| 国产成人精品www牛牛影视| 亚洲国产成人av网| 精品国产乱码久久久久久闺蜜| 91丝袜呻吟高潮美腿白嫩在线观看| 午夜天堂影视香蕉久久| 国产亚洲综合性久久久影院| 欧美主播一区二区三区| 国内精品视频666| 一区二区欧美视频| 久久久精品免费免费| 欧美少妇性性性| 成人亚洲一区二区一| 日本欧美一区二区在线观看| 国产精品三级在线观看| 欧美一级欧美一级在线播放| av高清不卡在线| 国内外成人在线视频| 亚洲午夜久久久久久久久久久 | 国产精品美女视频| 日韩一区二区三区精品视频| 色综合久久99| 国产传媒日韩欧美成人| 日本麻豆一区二区三区视频| 亚洲女与黑人做爰| 欧美激情一区二区三区|