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

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

?? fttag.c

?? netflow,抓包
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/* * Copyright (c) 2001 Mark Fullmer and The Ohio State University * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *      $Id: fttag.c,v 1.15 2003/02/13 02:38:42 maf Exp $ */#include "ftconfig.h"#include "ftlib.h"#include <sys/time.h>#include <sys/types.h>#include <sys/uio.h>#include <sys/socket.h>#include <sys/resource.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/stat.h>#include <syslog.h>#include <dirent.h>#include <limits.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <fcntl.h>#include <zlib.h>#if HAVE_STRINGS_H #include <strings.h>#endif#if HAVE_STRING_H  #include <string.h>#endif#if !HAVE_STRSEP  char    *strsep (char **, const char *);#endifextern int max_keylen;extern u_int32 mask_lookup[];static struct radix_node_head *rhead;struct line_parser {  struct fttag_action *cur_action;  struct fttag_def *cur_def;  struct fttag_def_term *cur_def_term;  int state, type;  int lineno;  char *buf, *fname;};static int parse_action(struct line_parser *lp, struct fttag *fttag);static int parse_action_type(struct line_parser *lp, struct fttag *fttag);static int parse_action_match(struct line_parser *lp, struct fttag *fttag);static int parse_def(struct line_parser *lp, struct fttag *fttag);static int parse_def_exporter(struct line_parser *lp, struct fttag *fttag);static int parse_def_term(struct line_parser *lp, struct fttag *fttag);static int parse_def_input_filter(struct line_parser *lp, struct fttag *fttag);static int parse_def_output_filter(struct line_parser *lp, struct fttag *fttag);static int parse_def_action(struct line_parser *lp, struct fttag *fttag);static int resolve_actions(struct fttag *fttag);  static int walk_free(struct radix_node *rn, struct walkarg *UNUSED);static inline void eval_match_src_as(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_dst_as(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_src_prefix(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_dst_prefix(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_nexthop(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_as(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_prefix(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_tcp_src_port(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_tcp_dst_port(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_tcp_port(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_udp_src_port(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_udp_dst_port(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_udp_port(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_tos(struct fttag_action *fta,   struct fts3rec_v1005 *rec);static inline void eval_match_any(struct fttag_action *fta,   struct fts3rec_v1005 *rec);#define PARSE_STATE_ACTION          0x1#define PARSE_STATE_DEFINITION      0x2#define NEXT_WORD(A,B)\  for (;;) {\    B = strsep(A, " \t");\    if ((B && *B != 0) || (!B))\      break;\  }\ struct jump {  char *name;  int state;  int (*func)(struct line_parser *lp, struct fttag *fttag);};struct jump pjump[] = {{"tag-action", 0, parse_action},          {"type", PARSE_STATE_ACTION, parse_action_type},          {"match", PARSE_STATE_ACTION, parse_action_match},          {"tag-definition", 0, parse_def},          {"exporter", PARSE_STATE_DEFINITION, parse_def_exporter},          {"term", PARSE_STATE_DEFINITION, parse_def_term},          {"input-filter", PARSE_STATE_DEFINITION, parse_def_input_filter},          {"output-filter", PARSE_STATE_DEFINITION, parse_def_output_filter},          {"action", PARSE_STATE_DEFINITION, parse_def_action},          {0, 0, 0},          };/* * data structures: * * * fttag holds the head pointers to a list of actions, and definitions. * * Each definition holds a list of terms.  A term is a combination of * an input filter, output filter and list of actions. * * struct fttag_def               : linked list of definitions * struct fttag_action            : linked list of actions * struct fttag_def_term          : each term in a definition * struct fttag_def_term_actions  : each action in a term * * actions contain one of the following: * * struct fttag_prefix_look              : prefix radix trie lookup entry * struct fttag_as_look                  : AS table lookup * struct fttag_port_look                : port table lookup * struct fttag_tos_look                 : tos table lookup * struct fttag_next_hop_look            : next hop hash lookup entry * * struct fftag_exp_hash                 : hash table mapping exporter_ip *                                         to list of definitions.  Used *                                         when processing flows.  ie, lookup *                                         by exporter, test input/output *                                         filter then use action to add *                                         tags. * *//* * function: fttag_load * * Process fname into fttag. * * tag file format: * * tag-action OSU * # src-prefix|dst-prefix|prefixx *  type src-prefi *  match 128.146/16 set-src 100 *  match 164.107/16 set-src 100 *  match 140.254/16 set-src 100 * * tag-action OSU2 *  # src-as|dst-as|as *  type src-as *  match 159 set-src 0x1 *  match 600 or-src 0x2 * * tag-action OSU3   *  type next-hop    *  match 199.18.2.2 set-src 100 *  match 199.18.2.1 set-src 101 * * tag-definition OSUrouter1 *  term *   exporter 128.146.1.1 *   input-filter 1,2,3,4 *   output-filter !5-9 *   action OSU *   action OSU2 *  term *   exporter 128.146.2.1 *   input-filter 1 *   output-filter 5 * * returns: 0  ok *          <0 fail */int fttag_load(struct fttag *fttag, char *fname){  static int rn_init_called;  struct stat sb;  struct jump *jmp;  struct line_parser lp;  int fd, ret, found;  char *buf, *buf2, *c;  ret = -1;  buf = (char*)0L;  bzero(&lp, sizeof lp);  bzero(fttag, sizeof *fttag);  if (!rn_init_called) {    max_keylen = sizeof(struct radix_sockaddr_in);    rn_init();    rn_init_called = 1;  }  FT_SLIST_INIT(&fttag->defs);  FT_SLIST_INIT(&fttag->actions);  lp.fname = fname;  if ((fd = open(fname, O_RDONLY, 0)) < 0) {    fterr_warn("open(%s)", fname);    goto load_tags_out;  }  if (fstat(fd, &sb) < 0) {    fterr_warn("stat(%s)", fname);    goto load_tags_out;  }    /* allocate storage for file */  if (!(buf = malloc(sb.st_size+1))) {    fterr_warn("malloc()");    goto load_tags_out;  }  /* read in file */  if (read(fd, buf, sb.st_size) != sb.st_size) {    fterr_warnx("read(%s): short", fname);    goto load_tags_out;  }  /* null terminate file */  buf[sb.st_size] = 0;  buf2 = buf;  for (;;) {      /* rip a line */    for (;;) {      c = strsep(&buf2, "\n");      ++lp.lineno;      if ((c && *c != 0) || (!c))        break;    }    /* no more lines */    if (!c) {      goto load_tags_done;    }    lp.buf = c;    /* first word */    NEXT_WORD(&lp.buf, c);    /* whitespace only line */    if (!c) {      continue;    }    /* comment line */    if (c && *c == '#')      continue;    for (jmp = pjump; jmp->name; ++jmp) {      found = 0;      if (((!jmp->state) || (jmp->state & lp.state))        && (!strcasecmp(c, jmp->name))) {        found = 1;        if (jmp->func(&lp, fttag))          goto load_tags_out;        NEXT_WORD(&lp.buf, c);        if (c) {          fterr_warnx("%s line %d: Unexpected \"%s\".", lp.fname, lp.lineno, c);          goto load_tags_out;        }        break;      }    } /* test each word */    if (!found) {      fterr_warnx("%s line %d: Unexpected \"%s\".", lp.fname, lp.lineno, c);      goto load_tags_out;    }     } /* more lines */load_tags_done:  if (resolve_actions(fttag))    goto load_tags_out;  ret = 0;load_tags_out:  if (fd != -1)    close(fd);  if (buf)    free(buf);  if (ret == -1)    fttag_free(fttag);  return ret;} /* fttag_load *//* * function: fttag_defintion_find * * Return a pointer to a fttag_def_lookup for use later with * fttag_def_eval * * Note this allocates storage and precomputes a hash table * to speed up the eval phase.  Storage is freed by fttag_free() * * returns : pointer to fttag_def_lookup or null if not found or error. * */struct fttag_def *fttag_def_find(struct fttag *fttag, char *name){  struct fttag_def *ftd;  /* foreach definition */  FT_SLIST_FOREACH(ftd, &fttag->defs, chain) {    if (!(strcasecmp(ftd->name, name)))       return ftd;  }  return (struct fttag_def*)0L;} /* fttag_def_find *//* * function: parse_action * * process the 'action' line.  Each action has a unique name which * is added to the fttag->actions linked list.  The current action is * updated in lp.  Actions by themself do nothing, they must be pointed * to by a definition. * * returns: 0  ok *          <0 fail */int parse_action(struct line_parser *lp, struct fttag *fttag){  char *c;  struct fttag_action *fta;  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(fta, &fttag->actions, chain) {    if (!strcasecmp(c, fta->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 (!(fta = (struct fttag_action*)malloc(sizeof (struct fttag_action)))) {    fterr_warn("malloc()");    return -1;  }  bzero(fta, sizeof *fta);  if (!(fta->name = (char*)malloc(strlen(c)+1))) {    fterr_warn("malloc()");    free(fta);    return -1;  }  strcpy(fta->name, c);  FT_SLIST_INSERT_HEAD(&fttag->actions, fta, chain);  lp->state = PARSE_STATE_ACTION;  lp->cur_action = fta;  return 0;} /* parse_action *//* * function: parse_action_type * * process the 'type' line.  When the type is set the initial storage * (table/hash/radix trie) is allocated. * * returns: 0  ok *          <0 fail */int parse_action_type(struct line_parser *lp, struct fttag *fttag){  char *c;  if (!lp->cur_action) {    fterr_warnx("%s line %d: Must set name first.", lp->fname, lp->lineno);    return -1;  }  NEXT_WORD(&lp->buf, c);  if (!c) {    fterr_warnx("%s line %d: Expecting type.", lp->fname, lp->lineno);    return -1;  }  if (lp->cur_action->type) {    fterr_warnx("%s line %d: Type previously defined.", lp->fname, lp->lineno);    return -1;  }  if (!strcasecmp(c, "src-prefix")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_SRC_PREFIX;    lp->cur_action->eval = eval_match_src_prefix;  } else if (!strcasecmp(c, "dst-prefix")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_DST_PREFIX;    lp->cur_action->eval = eval_match_dst_prefix;  } else if (!strcasecmp(c, "prefix")) {    lp->cur_action->eval = eval_match_prefix;    lp->cur_action->type = FT_TAG_TYPE_MATCH_PREFIX;  } else if (!strcasecmp(c, "next-hop")) {    lp->cur_action->eval = eval_match_nexthop;    lp->cur_action->type = FT_TAG_TYPE_MATCH_NEXTHOP;  } else if (!strcasecmp(c, "src-as")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_SRC_AS;    lp->cur_action->eval = eval_match_src_as;  } else if (!strcasecmp(c, "dst-as")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_DST_AS;    lp->cur_action->eval = eval_match_dst_as;  } else if (!strcasecmp(c, "as")) {    lp->cur_action->eval = eval_match_as;    lp->cur_action->type = FT_TAG_TYPE_MATCH_AS;  } else if (!strcasecmp(c, "tcp-src-port")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_SRC_TCP_PORT;    lp->cur_action->eval = eval_match_tcp_src_port;  } else if (!strcasecmp(c, "tcp-dst-port")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_DST_TCP_PORT;    lp->cur_action->eval = eval_match_tcp_dst_port;  } else if (!strcasecmp(c, "tcp-port")) {    lp->cur_action->eval = eval_match_tcp_port;    lp->cur_action->type = FT_TAG_TYPE_MATCH_TCP_PORT;  } else if (!strcasecmp(c, "udp-src-port")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_SRC_UDP_PORT;    lp->cur_action->eval = eval_match_udp_src_port;  } else if (!strcasecmp(c, "udp-dst-port")) {    lp->cur_action->type = FT_TAG_TYPE_MATCH_DST_UDP_PORT;    lp->cur_action->eval = eval_match_udp_dst_port;  } else if (!strcasecmp(c, "udp-port")) {    lp->cur_action->eval = eval_match_udp_port;    lp->cur_action->type = FT_TAG_TYPE_MATCH_TCP_PORT;  } else if (!strcasecmp(c, "tos")) {    lp->cur_action->eval = eval_match_tos;    lp->cur_action->type = FT_TAG_TYPE_MATCH_TOS;  } else if (!strcasecmp(c, "any")) {    lp->cur_action->eval = eval_match_any;    lp->cur_action->type = FT_TAG_TYPE_MATCH_ANY;  } else {    fterr_warnx("%s line %d: Unrecognized type.", lp->fname, lp->lineno);    return -1;  }   /* allocate storage for lookup */  if ((lp->cur_action->type & FT_TAG_TYPE_MATCH_AS)) {    if (!(lp->cur_action->look = malloc(sizeof (struct fttag_as_look)))) {      fterr_warn("malloc()");      return -1;    }    bzero(lp->cur_action->look, sizeof (struct fttag_as_look));  } else if (lp->cur_action->type & FT_TAG_TYPE_MATCH_TOS) {    if (!(lp->cur_action->look = malloc(sizeof (struct fttag_tos_look)))) {      fterr_warn("malloc()");      return -1;    }    bzero(lp->cur_action->look, sizeof (struct fttag_tos_look));  } else if (lp->cur_action->type & FT_TAG_TYPE_MATCH_ANY) {    if (!(lp->cur_action->look = malloc(sizeof (struct fttag_any_look)))) {      fterr_warn("malloc()");      return -1;    }    bzero(lp->cur_action->look, sizeof (struct fttag_any_look));  } else if (lp->cur_action->type &    (FT_TAG_TYPE_MATCH_TCP_PORT|FT_TAG_TYPE_MATCH_UDP_PORT)) {    if (!(lp->cur_action->look = malloc(sizeof (struct fttag_port_look)))) {      fterr_warn("malloc()");      return -1;    }    bzero(lp->cur_action->look, sizeof (struct fttag_port_look));  } else if ((lp->cur_action->type & FT_TAG_TYPE_MATCH_PREFIX)) {    if (rn_inithead((void**)&lp->cur_action->look, 32) < 0) {      fterr_warnx("rn_inithead(): failed");      return -1;    }  } else if ((lp->cur_action->type & FT_TAG_TYPE_MATCH_NEXTHOP)) {    if (!(lp->cur_action->look = ftchash_new(256, sizeof      (struct fttag_next_hop_look), 4, 16))) {      fterr_warnx("ftchash_new(): failed");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美乱妇15p| 欧美国产欧美综合| 欧美日韩一级二级三级| 91美女蜜桃在线| 97成人超碰视| 91丨porny丨国产入口| 99久久精品99国产精品| 99在线精品观看| 91麻豆免费看| 欧美亚洲综合在线| 欧美电影影音先锋| 日韩一区二区电影在线| 日韩精品专区在线影院观看| 日韩欧美国产wwwww| 精品免费国产一区二区三区四区| 日韩视频国产视频| 久久亚洲捆绑美女| 国产精品三级久久久久三级| 1区2区3区欧美| 亚洲午夜精品一区二区三区他趣| 亚洲成人午夜影院| 裸体健美xxxx欧美裸体表演| 久久er精品视频| 不卡欧美aaaaa| 欧美色精品在线视频| 欧美精品v国产精品v日韩精品| 日韩欧美久久久| 久久精品水蜜桃av综合天堂| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美日韩在线不卡| 亚洲成人综合视频| 国产一区二三区| 成人av网址在线| 欧美亚洲一区二区在线| 欧美一区二区三区婷婷月色| 久久亚洲综合色一区二区三区| 国产精品久久久久久亚洲毛片| 一区二区三区日韩欧美精品 | 久久精品999| 国产精品一二三四区| 97成人超碰视| 欧美一区二区三区四区五区| 久久久久久久av麻豆果冻| 亚洲欧洲三级电影| 全部av―极品视觉盛宴亚洲| 国产精品白丝jk黑袜喷水| 色天天综合色天天久久| 日韩视频免费观看高清完整版| 国产精品无码永久免费888| 亚洲综合久久av| 国产在线播放一区二区三区| 91麻豆国产在线观看| 日韩一区和二区| 最好看的中文字幕久久| 免费高清不卡av| 91免费观看国产| 久久久99精品久久| 亚洲妇女屁股眼交7| 国产成人av电影在线播放| 欧美性videosxxxxx| 国产午夜精品久久久久久久| 亚洲午夜在线电影| 丁香五精品蜜臀久久久久99网站| 欧美中文一区二区三区| 久久久久高清精品| 三级在线观看一区二区| av爱爱亚洲一区| 精品少妇一区二区三区日产乱码| 一区二区三区四区精品在线视频 | av中文字幕亚洲| 日韩欧美国产综合在线一区二区三区| 中文字幕在线观看一区| 久久99久国产精品黄毛片色诱| 色又黄又爽网站www久久| 久久亚洲一区二区三区四区| 日本成人中文字幕在线视频 | 国产欧美综合色| 日本成人超碰在线观看| 在线观看日韩av先锋影音电影院| 国产日本亚洲高清| 免费看欧美女人艹b| 欧美性色黄大片| 亚洲欧洲精品成人久久奇米网| 精品亚洲国内自在自线福利| 欧美精品v日韩精品v韩国精品v| 亚洲精品美腿丝袜| 成人做爰69片免费看网站| 久久亚洲精华国产精华液| 日韩成人一区二区三区在线观看| 色视频欧美一区二区三区| 国产欧美一区二区三区沐欲| 久久成人精品无人区| 日韩写真欧美这视频| 亚洲国产裸拍裸体视频在线观看乱了| 成人av网址在线| 国产精品福利一区二区| 国产99久久久国产精品潘金网站| 亚洲精品在线免费播放| 六月丁香综合在线视频| 欧美大片日本大片免费观看| 日本午夜精品视频在线观看| 欧美一区日本一区韩国一区| 亚洲国产综合91精品麻豆| 在线看国产一区| 亚洲最新在线观看| 欧美午夜精品免费| 一个色综合网站| 欧美丝袜第三区| 香蕉影视欧美成人| 欧美日韩中文字幕一区| 亚洲h精品动漫在线观看| 欧美日韩国产小视频在线观看| 亚洲成人福利片| 91精品国产一区二区| 奇米777欧美一区二区| 日韩欧美成人一区| 激情文学综合丁香| 国产日韩欧美在线一区| 成人高清视频免费观看| 亚洲三级在线看| 精品视频全国免费看| 婷婷中文字幕一区三区| 欧美一级高清片| 国产呦萝稀缺另类资源| 国产欧美日本一区视频| 成人av网站大全| 一级精品视频在线观看宜春院| 欧美日韩一级视频| 精品在线播放免费| 欧美极品aⅴ影院| 91老司机福利 在线| 亚洲图片自拍偷拍| 日韩美女一区二区三区四区| 国产乱码一区二区三区| 国产精品久久久久久久久果冻传媒| 91麻豆自制传媒国产之光| 午夜精品福利久久久| 欧美成人video| 不卡av在线免费观看| 亚洲va国产天堂va久久en| 欧美精品一区二区三区久久久| 国产成人av自拍| 亚洲国产欧美一区二区三区丁香婷| 欧美精品777| 国产精品综合网| 一区二区三区四区不卡在线| 日韩欧美一区二区在线视频| 高清国产一区二区| 亚洲国产aⅴ天堂久久| 精品国产一区二区三区四区四| www.欧美.com| 日韩电影在线一区二区三区| 欧美国产日产图区| 欧美丰满美乳xxx高潮www| 国产91精品在线观看| 亚洲国产精品自拍| 国产视频在线观看一区二区三区| 日本福利一区二区| 国内一区二区视频| 亚洲第一主播视频| 国产精品看片你懂得| 欧美精品在欧美一区二区少妇| 国产成人精品三级| 日韩精品一级中文字幕精品视频免费观看| 国产午夜亚洲精品理论片色戒| 欧美日韩亚洲不卡| 99精品久久久久久| 精品在线免费视频| 婷婷中文字幕综合| 中文字幕综合网| 久久精品一级爱片| 欧美一区二区三区四区在线观看| 99国产精品久久久久久久久久| 日本午夜精品一区二区三区电影| 亚洲精品视频在线看| 欧美精品一区二区三区高清aⅴ | 国产一区美女在线| 午夜精品久久久久久久蜜桃app| 日本一区二区三区高清不卡| 欧美二区乱c少妇| 色欧美片视频在线观看| 国产精品综合在线视频| 麻豆专区一区二区三区四区五区| 亚洲乱码国产乱码精品精98午夜| 久久久久久久久久久久久久久99| 欧美精品在线一区二区三区| 色婷婷综合久久久中文一区二区| 国产麻豆精品在线观看| 免费成人av在线| 亚洲成年人影院| 亚洲欧美日韩中文字幕一区二区三区 | 精品国产一区二区三区久久久蜜月 | 欧美国产丝袜视频| 久久综合九色欧美综合狠狠| 欧美日韩亚洲高清一区二区| 色猫猫国产区一区二在线视频| 国产69精品久久777的优势| 激情文学综合丁香| 国内精品久久久久影院一蜜桃| 轻轻草成人在线|