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

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

?? fttag.c

?? netflow,抓包
?? C
?? 第 1 頁 / 共 3 頁
字號:
      return -1;    }  }  return 0;} /* parse_action_type *//* * function: parse_action_match * * process the 'match/set' line.  The match action depends on the type which * must be configured first.  An AS match is added to a table, a next-hop * is added to a hash (chash_*) and a prefix is added to a radix trie. * * returns: 0  ok *          <0 fail */int parse_action_match(struct line_parser *lp, struct fttag *fttag){  struct radix_sockaddr_in sock1, sock2;  struct fttag_as_look *as_look;  struct fttag_next_hop_look *nh_look, nh_look2;  struct fttag_prefix_look *prefix_look;  struct fttag_port_look *port_look;  struct fttag_tos_look *tos_look;  struct fttag_any_look *any_look;  struct ip_prefix ipp;  struct radix_node_head *rhead;  u_int32 tag, hash, ipaddr;  u_int16 as, port;  u_int8 tos;  int sflag, new;  char *c, *match;  if (!lp->cur_action->type) {    fterr_warnx("%s line %d: Must set type first.", lp->fname, lp->lineno);    return -1;  }  bzero(&sock1, sizeof sock1);  bzero(&sock2, sizeof sock2);  sock1.sin_family = AF_INET;  sock1.sin_len = sizeof (struct radix_sockaddr_in);  sock2.sin_family = AF_INET;  sock2.sin_len = sizeof (struct radix_sockaddr_in);  as_look = lp->cur_action->look;  nh_look = lp->cur_action->look;  prefix_look = lp->cur_action->look;  port_look = lp->cur_action->look;  tos_look = lp->cur_action->look;  any_look = lp->cur_action->look;  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting match data.", lp->fname, lp->lineno);    return -1;  }  match = c;  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting [set|or]-[src|dst].", lp->fname, lp->lineno);    return -1;  }  if (!strcasecmp(c, "set-src"))    sflag = FT_TAG_SET_SRC_TAG;  else if (!strcasecmp(c, "set-dst"))    sflag = FT_TAG_SET_DST_TAG;  else if (!strcasecmp(c, "or-src"))    sflag = FT_TAG_OR_SRC_TAG;  else if (!strcasecmp(c, "or-dst"))    sflag = FT_TAG_OR_DST_TAG;  else {    fterr_warnx("%s line %d: Expecting [set|or]-[src|dst].", lp->fname, lp->lineno);    return -1;  }  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting set data.", lp->fname, lp->lineno);    return -1;  }  tag = strtoul(c, (char **)0L, 0);  if (lp->cur_action->type & FT_TAG_TYPE_MATCH_AS) {    as = atoi(match);    if (as_look->set_flags_lookup[as] & sflag) {      fterr_warnx("%s line %d: Only one match.", lp->fname, lp->lineno);      return -1;    }    as_look->set_flags_lookup[as] |= sflag;    if (sflag & FT_TAG_SET_SRC_TAG)      as_look->src_tag_lookup[as] = tag;    if (sflag & FT_TAG_OR_SRC_TAG)      as_look->src_tag_lookup[as] |= tag;    if (sflag & FT_TAG_SET_DST_TAG)      as_look->dst_tag_lookup[as] = tag;    if (sflag & FT_TAG_OR_DST_TAG)      as_look->dst_tag_lookup[as] |= tag;  } else if (lp->cur_action->type &    (FT_TAG_TYPE_MATCH_TCP_PORT|FT_TAG_TYPE_MATCH_UDP_PORT)) {    port = atoi(match);    if (port_look->set_flags_lookup[port] & sflag) {      fterr_warnx("%s line %d: Only one match.", lp->fname, lp->lineno);      return -1;    }    port_look->set_flags_lookup[port] |= sflag;    if (sflag & FT_TAG_SET_SRC_TAG)      port_look->src_tag_lookup[port] = tag;    if (sflag & FT_TAG_OR_SRC_TAG)      port_look->src_tag_lookup[port] |= tag;    if (sflag & FT_TAG_SET_DST_TAG)      port_look->dst_tag_lookup[port] = tag;    if (sflag & FT_TAG_OR_DST_TAG)      port_look->dst_tag_lookup[port] |= tag;  } else if (lp->cur_action->type & FT_TAG_TYPE_MATCH_TOS) {    tos = atoi(match);    if (tos_look->set_flags_lookup[tos] & sflag) {      fterr_warnx("%s line %d: Only one match.", lp->fname, lp->lineno);      return -1;    }    tos_look->set_flags_lookup[tos] |= sflag;    if (sflag & FT_TAG_SET_SRC_TAG)      tos_look->src_tag_lookup[tos] = tag;    if (sflag & FT_TAG_OR_SRC_TAG)      tos_look->src_tag_lookup[tos] |= tag;    if (sflag & FT_TAG_SET_DST_TAG)      tos_look->dst_tag_lookup[tos] = tag;    if (sflag & FT_TAG_OR_DST_TAG)      tos_look->dst_tag_lookup[tos] |= tag;  } else if (lp->cur_action->type & FT_TAG_TYPE_MATCH_ANY) {    if (strcasecmp(match, "any")) {      fterr_warnx("%s line %d: Match must be any.", lp->fname, lp->lineno);      return -1;    }    if (any_look->set_flags & sflag) {      fterr_warnx("%s line %d: Only one match.", lp->fname, lp->lineno);      return -1;    }    any_look->set_flags |= sflag;    if (sflag & FT_TAG_SET_SRC_TAG)      any_look->src_tag = tag;    if (sflag & FT_TAG_OR_SRC_TAG)      any_look->src_tag |= tag;    if (sflag & FT_TAG_SET_DST_TAG)      any_look->dst_tag = tag;    if (sflag & FT_TAG_OR_DST_TAG)      any_look->dst_tag |= tag;  } else if (lp->cur_action->type & FT_TAG_TYPE_MATCH_PREFIX) {    ipp = scan_ip_prefix(match);    sock1.sin_addr.s_addr = ipp.addr;    sock2.sin_addr.s_addr = (!ipp.len) ? 0 : mask_lookup[ipp.len];    rhead = lp->cur_action->look;    /* try to retrieve from trie */    prefix_look = (struct fttag_prefix_look*)rhead->rnh_lookup(&sock1,    &sock2, rhead);    new = 1;    /* if it exists, make sure not a duplicate set */    if (prefix_look && (prefix_look->addr.sin_addr.s_addr == ipp.addr) &&        (prefix_look->masklen == ipp.len)) {      /* if the set is invalid fail, else update the record and return */      if (prefix_look->set_flags & sflag) {        fterr_warnx("%s line %d: Only one match.", lp->fname, lp->lineno);        return -1;      } else {        new = 0;      }    }    /* allocate a new prefix lookup */    if (new) {      if (!(prefix_look = (struct fttag_prefix_look*)malloc(sizeof        (struct fttag_prefix_look)))) {        fterr_warn("malloc(prefix_look)");        return -1;      }      bzero(prefix_look, sizeof *prefix_look);      prefix_look->rt_nodes->rn_key = (caddr_t)&prefix_look->addr;      prefix_look->addr.sin_addr.s_addr = ipp.addr;      prefix_look->addr.sin_len = sizeof (struct radix_sockaddr_in);      prefix_look->addr.sin_family = AF_INET;      sock1.sin_addr.s_addr = (!ipp.len) ? 0 : mask_lookup[ipp.len];      prefix_look->masklen = ipp.len;      /* add it to the trie */      if (!rhead->rnh_addaddr(&prefix_look->addr, &sock1, rhead,        prefix_look->rt_nodes)) {        free(prefix_look);        fterr_warnx("rnh_addaddr(): failed for %s",match);        return -1;      }    } /* new */    /* finish filling in */    prefix_look->set_flags |= sflag;    if (sflag & FT_TAG_SET_SRC_TAG)      prefix_look->src_tag = tag;    if (sflag & FT_TAG_OR_SRC_TAG)      prefix_look->src_tag |= tag;    if (sflag & FT_TAG_SET_DST_TAG)      prefix_look->dst_tag = tag;    if (sflag & FT_TAG_OR_DST_TAG)      prefix_look->dst_tag |= tag;  } else if (lp->cur_action->type & FT_TAG_TYPE_MATCH_NEXTHOP) {    ipaddr = scan_ip(match);    hash = (ipaddr>>16) ^ (ipaddr & 0xFFFF);    hash = (hash>>8) ^ (hash & 0xFF);    nh_look = ftchash_lookup(lp->cur_action->look, &ipaddr, hash);    new = 1;    /* if it exists, make sure not a duplicate set */    if (nh_look) {      /* if the set is invalid fail, else update the record and return */      if (nh_look->set_flags & sflag) {        fterr_warnx("%s line %d: Only one match.", lp->fname, lp->lineno);        return -1;      } else {        new = 0;      }    }    if (new) {      bzero(&nh_look2, sizeof nh_look2);      nh_look2.addr = ipaddr;      if (!(nh_look = ftchash_update(lp->cur_action->look, &nh_look2, hash))) {        fterr_warnx("ftch_update(): failed");        return -1;      }    }    /* finish filling in fields */    nh_look->set_flags |= sflag;    if (sflag & FT_TAG_SET_SRC_TAG)      nh_look->src_tag = tag;    if (sflag & FT_TAG_OR_SRC_TAG)      nh_look->src_tag |= tag;    if (sflag & FT_TAG_SET_DST_TAG)      nh_look->dst_tag = tag;    if (sflag & FT_TAG_OR_DST_TAG)      nh_look->dst_tag |= tag;  }  return 0;} /* parse_action_match *//* * function: parse_def * * process the 'definition' line.  Each definition has a unique name which * is added to the fttag->defs linked list.  The current definition is * updated in lp. * * returns: 0  ok *          <0 fail */int parse_def(struct line_parser *lp, struct fttag *fttag){  char *c;  struct fttag_def *ftd;  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting name.", lp->fname, lp->lineno);    return -1;  }  /* check if it exists */  FT_SLIST_FOREACH(ftd, &fttag->defs, chain) {    if (!strcasecmp(c, ftd->name)) {      fterr_warnx("%s line %d: Name (%s) previously defined.", lp->fname,        lp->lineno, c);      return -1;    }  }  /* no, add a new entry to the list */  if (!(ftd = (struct fttag_def*)malloc(sizeof    (struct fttag_def)))) {    fterr_warn("malloc()");    return -1;  }  bzero(ftd, sizeof *ftd);  FT_STAILQ_INIT(&ftd->terms);  if (!(ftd->name = (char*)malloc(strlen(c)+1))) {    fterr_warn("malloc()");    free(ftd);    return -1;  }  strcpy(ftd->name, c);  FT_SLIST_INSERT_HEAD(&fttag->defs, ftd, chain);  lp->state = PARSE_STATE_DEFINITION;  lp->cur_def = ftd;  return 0;} /* parse_def *//* * function: parse_def_term * * process the term line.  Each definition has a list of terms, the * terms have a common input, output, and exporter IP filter and * may have one or more actions.  Without an action a term has * no purpose. * * returns: 0  ok *          <0 fail */int parse_def_term(struct line_parser *lp, struct fttag *fttag){  struct fttag_def_term *ftdt;  if (!lp->cur_def) {    fterr_warnx("%s line %d: Must set name first.", lp->fname, lp->lineno);    return -1;  }  /* no, add a new term entry to this definition */  if (!(ftdt = (struct fttag_def_term*)malloc(sizeof *ftdt))) {    fterr_warn("malloc()");    return -1;  }  bzero(ftdt, sizeof *ftdt);  FT_STAILQ_INIT(&ftdt->actions);  FT_STAILQ_INSERT_TAIL(&lp->cur_def->terms, ftdt, chain);  lp->cur_def_term = ftdt;  return 0;} /* parse_def_term *//* * function: parse_def_exporter * * process the 'exporter' line. * * returns: 0  ok *          <0 fail */int parse_def_exporter(struct line_parser *lp, struct fttag *fttag){  char *c;  if (!lp->cur_def_term) {    fterr_warnx("%s line %d: Must start term.", lp->fname, lp->lineno);    return -1;  }  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting exporter.", lp->fname, lp->lineno);    return -1;  }  if (lp->cur_def_term->flags & FT_TAG_DEF_FILTER_EXPORTER) {    fterr_warnx("%s line %d: Exporter previously defined.", lp->fname,    lp->lineno);    return -1;  }  lp->cur_def_term->exporter_ip = scan_ip(c);  lp->cur_def_term->flags |= FT_TAG_DEF_FILTER_EXPORTER;  return 0;} /* parse_def_exporter *//* * function: parse_def_input_filter * * process the 'input-filter' line. * * returns: 0  ok *          <0 fail */int parse_def_input_filter(struct line_parser *lp, struct fttag *fttag){  char *c;  if (!lp->cur_def_term) {    fterr_warnx("%s line %d: Must start term.", lp->fname, lp->lineno);    return -1;  }  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting filter list.", lp->fname, lp->lineno);    return -1;  }  if (lp->cur_def_term->flags & FT_TAG_DEF_FILTER_INPUT) {    fterr_warnx("%s line %d: Input filter previously defined.", lp->fname,    lp->lineno);    return -1;  }  if (load_lookup(c, 65536, lp->cur_def_term->in_tbl)) {    fterr_warnx("load_lookup(): failed");    return -1;  }  lp->cur_def_term->flags |= FT_TAG_DEF_FILTER_INPUT;  return 0;} /* parse_def_input_filter *//* * function: parse_def_output_filter * * process the 'output-filter' line. * * returns: 0  ok *          <0 fail */int parse_def_output_filter(struct line_parser *lp, struct fttag *fttag){  char *c;  if (!lp->cur_def_term) {    fterr_warnx("%s line %d: Must start term.", lp->fname, lp->lineno);    return -1;  }  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting filter list.", lp->fname, lp->lineno);    return -1;  }  if (lp->cur_def_term->flags & FT_TAG_DEF_FILTER_OUTPUT) {    fterr_warnx("%s line %d: Output filter previously defined.", lp->fname,    lp->lineno);    return -1;  }  if (load_lookup(c, 65536, lp->cur_def_term->out_tbl)) {    fterr_warnx("load_lookup(): failed");    return -1;  }  lp->cur_def_term->flags |= FT_TAG_DEF_FILTER_OUTPUT;  return 0;} /* parse_def_output_filter *//* * function: parse_def_action * * foreach action listed, add it to a linked list of actions for the * definition.  Note resolve_actions() must be called before the actions * are valid. * * returns: 0  ok *          <0 fail */int parse_def_action(struct line_parser *lp, struct fttag *fttag){  struct fttag_def_term_actions *ftdta;  char *c;  if (!lp->cur_def_term) {    fterr_warnx("%s line %d: Must start term.", lp->fname, lp->lineno);    return -1;  }  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting action.", lp->fname, lp->lineno);    return -1;  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费看视频在线| 国内外成人在线视频| 国产黑丝在线一区二区三区| www一区二区| 国产精品影视在线观看| 国产亚洲一区二区三区四区| 国产在线播放一区二区三区| 久久久国产精品麻豆| 成人在线视频首页| 日韩理论电影院| 91免费视频网| 亚洲在线视频网站| 在线综合视频播放| 久久精品国产精品亚洲精品| 国产亚洲精品精华液| av中文一区二区三区| 亚洲午夜日本在线观看| 日韩一级黄色片| 国产99精品在线观看| 亚洲欧美偷拍另类a∨色屁股| 欧美在线观看你懂的| 国产精品久久久久久久久久免费看| 成人做爰69片免费看网站| 亚洲精品五月天| 91精品婷婷国产综合久久| 国产麻豆精品视频| 亚洲猫色日本管| 91精品久久久久久久91蜜桃| 国产成人在线看| 樱花影视一区二区| 日韩欧美国产三级电影视频| 不卡一区在线观看| 午夜成人免费视频| 国产清纯美女被跳蛋高潮一区二区久久w | 国产成人免费高清| 一区二区三区四区中文字幕| 日韩一卡二卡三卡四卡| 日韩欧美一区在线观看| 中国av一区二区三区| 欧美日韩卡一卡二| 成人精品视频一区| 免费成人在线观看| 亚洲精品视频在线| 久久久久久一级片| 777奇米四色成人影色区| 国产精品丝袜久久久久久app| 美女视频网站久久| 一区二区三国产精华液| 久久精子c满五个校花| 欧美日韩国产小视频在线观看| 国产成人精品免费网站| 日本女人一区二区三区| 亚洲精品va在线观看| 国产亚洲人成网站| 日韩精品在线一区二区| 天堂成人国产精品一区| 亚洲另类在线视频| 久久久久久久久久久电影| 欧美电影影音先锋| 在线观看成人小视频| jizz一区二区| 国产99精品视频| 精品一区二区三区在线观看国产| 一区二区久久久| 欧美日韩电影一区| 一本大道久久a久久综合婷婷| 国产综合久久久久影院| 麻豆精品在线观看| 天堂va蜜桃一区二区三区漫画版| 一区二区在线观看免费视频播放| 国产精品天美传媒沈樵| 国产精品毛片高清在线完整版 | 人妖欧美一区二区| 亚洲国产视频在线| 精品国产一区二区三区不卡| 欧美性大战久久| 欧美网站一区二区| 欧美日韩在线综合| 欧美亚洲日本一区| 色婷婷久久一区二区三区麻豆| av午夜精品一区二区三区| www.亚洲国产| 色综合视频在线观看| 99热这里都是精品| 97成人超碰视| 日本韩国欧美在线| 欧美在线免费播放| 欧美女孩性生活视频| 91精品欧美久久久久久动漫| 91精品视频网| 久久综合久久久久88| 久久精品一区二区三区不卡| av亚洲产国偷v产偷v自拍| 色婷婷久久99综合精品jk白丝| 色吊一区二区三区| 欧美乱熟臀69xxxxxx| 国产成人午夜视频| 99v久久综合狠狠综合久久| 色先锋久久av资源部| 欧美日韩国产123区| 欧美精品一区二区三区在线播放| 久久精品一区二区三区四区| 亚洲欧洲日产国码二区| 亚洲主播在线观看| 国产亚洲精品aa| 亚洲欧洲国产日韩| 亚洲成人免费观看| 紧缚捆绑精品一区二区| 懂色av中文字幕一区二区三区 | 久久99久久99精品免视看婷婷| 亚洲欧洲性图库| 亚洲成人你懂的| 国产一区二三区| 亚洲一区日韩精品中文字幕| 免费成人av在线| 久久丁香综合五月国产三级网站| 精品综合久久久久久8888| 成人美女视频在线看| 欧美亚洲国产一区二区三区| 欧美www视频| 亚洲情趣在线观看| 美女精品自拍一二三四| 不卡一区在线观看| 欧美成人精品高清在线播放| 国产欧美日韩另类视频免费观看 | 国产精品―色哟哟| 亚洲成人午夜影院| 粉嫩久久99精品久久久久久夜 | 国产成人福利片| 色94色欧美sute亚洲13| 精品国产电影一区二区| 一级精品视频在线观看宜春院| 国模大尺度一区二区三区| 色婷婷综合久久久久中文一区二区| 国产精品香蕉一区二区三区| 欧美视频在线一区| 国产日本一区二区| 奇米综合一区二区三区精品视频| 成人黄色小视频| 日韩精品最新网址| 一区二区三区国产豹纹内裤在线| 国产乱码精品一区二区三区av | 91久久精品日日躁夜夜躁欧美| 91精品一区二区三区久久久久久 | 亚洲自拍另类综合| 成人一道本在线| 精品免费国产二区三区 | 人禽交欧美网站| 日本黄色一区二区| 久久久久久97三级| 蜜臀国产一区二区三区在线播放| 在线亚洲高清视频| 中文字幕一区日韩精品欧美| 91福利视频在线| 成人av免费在线播放| 精品理论电影在线| 日韩高清不卡一区二区三区| 欧美在线观看一二区| 依依成人综合视频| 一本到不卡免费一区二区| 亚洲欧洲一区二区三区| 国产成人精品一区二区三区四区| 国产一区二区看久久| 日韩一区二区精品在线观看| 五月婷婷欧美视频| 欧美视频完全免费看| 亚洲精品免费在线播放| 色综合视频在线观看| 亚洲女爱视频在线| 色综合久久久久综合体| 亚洲精品视频免费看| 91麻豆免费观看| 一区二区三区中文字幕精品精品| eeuss鲁片一区二区三区在线看| 国产精品网站在线播放| 成人久久久精品乱码一区二区三区| 国产免费久久精品| 成人av免费在线| 亚洲青青青在线视频| 日韩欧美国产午夜精品| 美美哒免费高清在线观看视频一区二区 | 欧美日韩国产区一| 洋洋av久久久久久久一区| 亚洲一区二区三区免费视频| 国产精品一线二线三线精华| 国产日产精品1区| 97久久超碰国产精品电影| 亚洲精品成人精品456| 欧美三区在线视频| 欧美bbbbb| 久久精品无码一区二区三区| 成人动漫在线一区| 一区二区三区在线高清| 久久er99热精品一区二区| 久久久久久久电影| fc2成人免费人成在线观看播放| 亚洲国产aⅴ成人精品无吗| 欧美一区二区三区精品| 国产1区2区3区精品美女| 一区av在线播放|