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

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

?? cli_main.c

?? 在freescale 的ne64上開發的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <string.h>
#include <stdio.h>
#include <stdlib.h> /*atoi*/
#include "cli_lib.h"
#include "hw_api.h"
#include "timers.h"

UINT8 cmd_node  = 0;/*node mode*/
UINT8 cmd_part  = 1;/*how many keyworks in the command*/
UINT8 character_num = 0;/*command char num*/
UINT32 timeout_times  = 0;/*time out times*/
UINT8 cli_reset  = 0;/*cli reset flag*/
UINT8 password_retry  = 0;
UINT32 serialNum=0;
UINT32 random_number  = 0;
UINT8 hostname[16]={'F','e','n','g','i','n','e',0};
UINT8 password[8] ={'1','2','3','4','5',0,0,0};
UINT8 command[CMD_MAX_LEN+1]; /*buffer for store command*/
/*tinyang*/
UINT8 cmd_index[5];/*store preview command*/
UINT8 cmd_point = 0;
UINT8 cmd_full = 0;
UINT8 current_point = 0;
UINT8 *cmd[CMD_MAX_PART];
UINT8 cli_timer;

const struct tCmdDB cmd_db[]={

	{"help", "Help commands of current node\n", ALL_NODE,1,list_cmd},
	//{"list", "List commands of current node\n", ALL_NODE,1,list_cmd},
	//{"end", "End current node command\n", ALL_NODE,1,end_cmd},
	//{"exit", "Exit from current node\n",ALL_NODE,1,quit_cmd},
	{"quit", "Quit from current node\n",ALL_NODE,1,quit_cmd},
	{"config", "Enter config node\n", SHOW_NODE,1,config_cmd},
	{"show running-config", "Show information\nRunning configuration\n",SHOW_NODE,2,show_run_cmd},
	{"show startup-config", "#\nStartup configuration\n",SHOW_NODE,2,show_start_cmd},
	{"show interface", "#\nInterface infomation\n",SHOW_NODE,2,show_if_cmd},
	{"show interface statistics", "#\n#\nStatistics",SHOW_NODE,3,show_if_statis_cmd},
	{"show version", "#\nVersion information\n",SHOW_NODE,2,show_version_cmd},
	{"show system", "#\nsystem information\n",SHOW_NODE,2,show_system_cmd},
	{"show log", "#\nsystem log\n",SHOW_NODE,2,show_log_cmd},
	{"ping <A.B.C.D> ", "ping\nip address\n",ALL_NODE, 2,ping_host},
	{"reboot", "Reboot System", ALL_NODE,1,reboot_cmd},
	{"write file", "Write to nvram\nSave file", CONFIG_NODE,2,write_file_cmd},
	{"erase startup-config", "Erase configuration\nErase startup configuration",CONFIG_NODE,2,erase_file_cmd},
	{"hostname <HOSTNAME>", "Config hostname\nhostname string\n",CONFIG_NODE,2,hostname_cmd},
	{"password <PASSWORD>", "Config password\npassword string\n",CONFIG_NODE,2,password_cmd},
	{"description <STRING>", "Device description\nDescription String\n",CONFIG_NODE, 2, device_descr_cmd},
	{"ip-address <A.B.C.D> <A.B.C.D>","ip address\naddress,such as 192.168.1.1\nnetmask such as 255.255.255.0\n",CONFIG_NODE,3,set_ipaddress_cmd},
	{"gateway <A.B.C.D>","Config gateway\ngateway addrss,such as 192.168.1.254\n",CONFIG_NODE,2,set_gateway_cmd},
	{"no ip-address", "no\nip-address,snmp config invalid\n",CONFIG_NODE, 2,no_ip_address},

	/*add snmp config command*/
	{"snmp trap-server <1-5> <A.B.C.D> <1-65535>", "snmp\ntrap-server\nserver ID\nTrap server address\nTrap server port\n",CONFIG_NODE, 5,set_snmp_trap},
	{"snmp trap-server <1-5> <A.B.C.D>", "#\n#\n#\n#\ndefault is 162\n",CONFIG_NODE, 4,set_snmp_trap},
	{"no snmp trap-server <1-5>", "#\nsnmp\ntrap-server\nserver ID\n",CONFIG_NODE, 4,no_set_trap},
	{"snmp community <1-5> <community> (ro|rw)", "#\ncommunity\nID\ncommunity name\nread-only or read_write\n",CONFIG_NODE, 5,set_snmp_community},
	{"no snmp community <1-5>", "#\n#\ncommunity\ncommunity ID\n",CONFIG_NODE, 4,no_set_community},
#if 1
	/*assign vlan id command*/
	{"management vlan <0-4095> <0-4095>", "Management vlan\nvlan ID\nfirst vlan ID, 0: no first vlan tag\nsecond vlan ID,0:no second vlan tag\n",CONFIG_NODE, 4,set_manager_vid},
	{"lfp enable", "LFP(link fault pass-through) config\nenable\n",CONFIG_NODE, 2 ,lfp_enable_cmd},
	{"lfp disable", "#\ndisable\n",CONFIG_NODE, 2 ,lfp_disable_cmd},
	{"fef enable", "FEF(far end fault) config\nenable\n",CONFIG_NODE, 2 ,fef_enable_cmd},
	{"fef disable", "#\ndisable\n",CONFIG_NODE, 2 ,fef_disable_cmd},
	{"dot3ah enable", "dot3ah OAM\ndot3ah OAM enable\n",CONFIG_NODE, 2, dot3ah_enable_cmd},
	{"dot3ah disable", "#\ndot3ah OAM disable\n",CONFIG_NODE, 2, dot3ah_disable_cmd},
	{"dot3ah port <1-2>", "#\nOAM port\nport, 1 or 2\n",CONFIG_NODE, 3, dot3ah_port_cmd},	
#endif
#if 1
	{"port <LIST> shutdown","Port config\nPortList:such as 1,2 or 1-2\nShutdown port\n",CONFIG_NODE, 3 ,port_shutdown_cmd},
	{"port <LIST> no-shutdown","#\n#\nNo-shutdown Port\n",CONFIG_NODE,3, port_no_shutdown_cmd},
	{"port <LIST> full enable", "#\n#\nFull duplex\nAuto-nego enable\n",CONFIG_NODE, 4, port_full_enable_cmd},
	{"port <LIST> full disable", "#\n#\n#\nAuto-nego disable\n",CONFIG_NODE, 4, port_full_disable_cmd},
	{"port <LIST> half enable", "#\n#\nHalf duplex\nAuto-nego enable\n",CONFIG_NODE, 4, port_half_enable_cmd},
	{"port <LIST> half disable", "#\n#\n#\nAuto-nego disable\n",CONFIG_NODE, 4, port_half_disable_cmd},
	{"port <LIST> speed (10|100|1000)", "#\n#\nPort Speed\n10M,100M or 1000M\n",CONFIG_NODE, 4, port_speed_cmd},
	{"port <LIST> rate-tx <0-3907>", "#\n#\nRate-tx\n0:No-limit,1-3907:n*64Kbps\n",CONFIG_NODE, 4 ,port_rate_tx_cmd},
	{"port <LIST> rate-bcast <0-3907>", "#\n#\nBroadcast strom control\n0:No-limit,1-3907:n*64Kbps\n",CONFIG_NODE, 4 ,port_rate_bcast_cmd},
	{"port <LIST> rate-m-bcast <0-3907>", "#\n#\nMulti-broadcast strom control\n0:No-limit,1-3907:n*64Kbps\n",CONFIG_NODE, 4 ,port_rate_mbcast_cmd},
	{"port <LIST> flowcontrol enable", "#\n#\nFlow control\nenable\n",CONFIG_NODE, 4 ,port_flow_enable_cmd},
	{"port <LIST> flowcontrol disable", "#\n#\n#\ndisable\n",CONFIG_NODE, 4 ,port_flow_disable_cmd},
#endif
#if 1
	{"show reg <0-31> <0-31>", "show\nchip reg\nphy addr\nreg addr\n",SHADOW_NODE,4,show_reg_cmd},
	{"set reg <0-31> <0-31> <0x0-0xFFFF>", "set\nchip reg\nphy addr\nreg addr\nvalue\n",SHADOW_NODE,5,set_reg_cmd},
	//{"show mcu <0x0-0xFFFF>", "#\nmcu reg\nreg addr\n",SHADOW_NODE,3,show_mcureg_cmd},
	//{"set mcu <0x0-0xFFFF> <0x0-0xFF>", "#\nmcu reg\nreg addr\nvalue\n",SHADOW_NODE,4,set_mcureg_cmd},
	{"mac (AA:BB:CC:DD:EE:FF)","Config mac address\nmac address:such as 00:04:67:00:00:01 or 00.04.67.00.00.01\n",SHADOW_NODE,2,set_mac_cmd},
	{"port <LIST> <1-2> <1-3> <1-4> <0-4096>", "PortConfig\nPortList\n1-twoFiber,2-singleFiber\n1-multiMode,2-singleMode,3-cwdmWave\n1-SC,2-FC,3-ST,4-LC\ndistance",SHADOW_NODE, 6, port_info_cmd},
	{"port <LIST> <0-4096> <0-4096>", "#\n#\nfiber tx wavelength\nfiber rx wavelength\n",SHADOW_NODE, 4, port_wavelength_cmd},
/*	{"show mac","#\nmac address\n",SHADOW_NODE,2,show_mac_cmd},*/
	{"dot3ah mode active", "dot3ah OAM\nOAM mode\nactive mode\n",SHADOW_NODE, 3, dot3ah_active_cmd},
	{"dot3ah mode passive", "#\n#\npassive mode",SHADOW_NODE, 3, dot3ah_passive_cmd},
	{"show dot3ah", "#\ndot3ah information\n",SHADOW_NODE, 2, show_dot3ah_cmd},
	{"debug <0-512>", "Display debug information",SHADOW_NODE, 2, debug_cmd},
#endif
	{0,0,0,0,0},
};

void cli_timer_task(void);

extern UINT8 waitInput;
extern UINT16 debug;

/********Function of taskDelay ******************/
void taskDelay(UINT32 time)
{
    UINT32 i, j;
    for(i = 0; i < time; i ++)
    {
        for (j = 0; j < 7; j ++);
    }
}

/********Function of print_motd ******************/
void  print_motd(void)
{
	printf("\n\r");
	printf("          ");
	printf("********************************************\n\r");printf("          ");
	printf("*          F-engine OL100CR  V1.3          *\n\r");printf("          ");
	printf("*                                          *\n\r");printf("          ");
	printf("*  Copyright 2001-2006 FiberHome Networks  *\n\r");printf("          ");
	printf("********************************************\n\r");
	printf("User Access Verification\n\r");	
}
/********Function of store_cmd ******************/
void restore_cmd(UINT8 mode)
{
	UINT8 index;
	UINT8 i;
	if(mode == PREVIEW_CMD)
	{
		if(current_point == 0)
		{
			if(cmd_full == 1)
				current_point = 4;
			else if(cmd_point == 0)
				return;
			else
				current_point = cmd_point -1;
		}
		else
			current_point--;
		index = cmd_index[current_point];
		
	}
	#if 0
	else if(mode == NEXT_CMD)
	{
		if(current_point == 4)
		{
			if(cmd_full == 1)
				current_point = 0;
			else
				return;
		}
		else
			current_point++;
		index = cmd_index[current_point];
	}
	#endif
	printf(cmd_db[index].cmd_str);
	strcpy(command,cmd_db[index].cmd_str);
	character_num=strlen(command);

	cmd_part=1;
	for(i=0;i<character_num;i++)
	{
		if(command[i]==BLANK_CHAR)
		{	
			cmd_part++;			
		}
	}
}
/********Function of prompt_node ******************/
void  prompt_node(void)
{
	switch(cmd_node)
	{
	case AUTH_NODE1:
		printf("Username:");
		break;
	case AUTH_NODE2:
		printf("Password:");
		break;
	case SHOW_NODE:
		printf(hostname);
		printf("#");
		break;
	case CONFIG_NODE:
		printf(hostname);
		printf("(config)#");
		break;
	case SHADOW_NODE:
		printf(hostname);
		printf("(Super)#");
		break;
	}
}

/********Function of help_command ******************/
void help_command(UINT8 bComplete)
{
	UINT8 i=0;
	UINT8 j=0;
	UINT8 tmp_part=0;
	UINT8 cr_match=0;
	UINT8 match_part=0;
	UINT8 match_cmd=0;
	UINT8 match_idx=0;
	UINT8 *cp;
	UINT8 *dp;
	UINT8 *cp1;
	UINT8 *dp1;
	if(cmd_node==AUTH_NODE1 || cmd_node==AUTH_NODE2)
		return ;
	if(cmd_part>CMD_MAX_PART)
		return ;
	/*split cmd*/
	cmd[0]=command;
	j=1;
	for(i=0;i<character_num;i++)
	{
		if(command[i]==BLANK_CHAR)
		{
			command[i]=0;
			cmd[j]=(command+i+1);
			j++;
		}
	}
	/*found matched command*/
	printf("\n\r");
	match_cmd=0;
	i=0;
	while(cmd_db[i].cmd_str!=0)
	{
		tmp_part=cmd_part;
		if(command[character_num-1]==0)/*if the last char is blank*/
			tmp_part--;
		if((tmp_part>cmd_db[i].cmd_part) ||
			( (cmd_db[i].cmd_node!=cmd_node) &&(cmd_db[i].cmd_node!=ALL_NODE)))
		{
			i++;
			continue;
		}
		match_part=0;
		dp=cmd_db[i].cmd_str;
		for(j=0;j<tmp_part;j++)
		{
			if(strncmp(dp,cmd[j],strlen(cmd[j]))!=0)
			{
				if(dp[0]=='<' || dp[0]=='(')
					match_part++;
				else
					break;
			}
			else
				match_part++;
			cp=strchr(dp,BLANK_CHAR);
			if(cp==NULL)
				break;
			dp=cp+1;
		}
		if(match_part==tmp_part)
		{
			if((tmp_part==cmd_db[i].cmd_part) && (command[character_num-1]==0))
			{
				cr_match++;
				match_cmd++;
			}
			else
			{
				if(command[character_num-1]!=0)
					tmp_part=tmp_part-1;
				dp=cmd_db[i].cmd_str;
				dp1=cmd_db[i].help_str;
				cp=dp;
				cp1=dp1;
				while(tmp_part>0)
				{
					cp=strchr(dp,BLANK_CHAR);
					cp1=strchr(dp1,'\n');
					if(cp==NULL)
						break;
					dp=cp+1;
					dp1=cp1+1;
					tmp_part--;
				}
				if(*dp1!='#')
				{
					match_cmd++;
					match_idx=i;
					printf("  ");
					for(j=0;j<strlen(dp);j++)
					{
						if(*(dp+j)==BLANK_CHAR)
							break;
						printf("%c",*(dp+j));
					}
					for(;j<18;j++)
					{
						printf(" ");
					}
					for(j=0;j<strlen(dp1);j++)
					{
						if(*(dp1+j)=='\n')
							break;
						printf("%c",*(dp1+j));
					}
					printf("\n\r");
				}				
			}
		}
		i++;
	}
	if(cr_match==1)
		printf("  <cr>\n\r");

	if(match_cmd==1 && bComplete==1)
	{
		dp=cmd_db[match_idx].cmd_str;
		cp=dp;
		for(j=0;j<cmd_part-1;j++)
		{
			cp=strchr(dp,BLANK_CHAR);
			if(cp==NULL)
				break;
			dp=cp+1;
		}
		if((command[character_num-1]!=0) && (*dp!='<' && *dp!='('))/*if the last char is blank*/
		{
			for(i=0;i<strlen(dp);i++)
			{
				if(*(dp+i)==BLANK_CHAR)
				{
					break;
				}
				if(cmd[cmd_part-1][i]!=*(dp+i))
				{
					cmd[cmd_part-1][i]=*(dp+i);
					character_num++;
				}
			}
			cmd[cmd_part-1][i]=BLANK_CHAR;
			character_num++;
			cmd_part++;
		}

		//if(strlen(

	}
	/*recover*/
	for(i=0;i<character_num;i++)
	{
		if(command[i]==0)
			command[i]=BLANK_CHAR;
	}
}

/********Function of parse_command ******************/
UINT8 parse_command(void)
{
	UINT8 i=0;
	UINT8 j=0;
	UINT8 match_part=0;
	UINT8 match_cmd=0;
	UINT8 match_idx=0;
	UINT8 *cp;
	UINT8 *dp;	
	if(cmd_node==AUTH_NODE1 || cmd_node==AUTH_NODE2)
		return BAD_CMD;
	/*split command */
	cmd_part=1;
	if(command[character_num-1]==BLANK_CHAR)/*if the last char is blank*/
		cmd_part--;
	cmd[0]=command;
	j=1;
	for(i=0;i<character_num;i++)
	{
		if(command[i]==BLANK_CHAR)
		{
			command[i]=0;
			cmd[j]=(command+i+1);
			cmd_part++;
			j++;
		}
	}
	if(cmd_part>CMD_MAX_PART)
		return BAD_CMD;
	/*found matched command*/
	match_cmd=0;
	i=0;
	while(cmd_db[i].cmd_str!=0)
	{
		if((cmd_part!=cmd_db[i].cmd_part) ||
			( (cmd_db[i].cmd_node!=cmd_node) &&(cmd_db[i].cmd_node!=ALL_NODE)))
		{
			i++;
			continue;
		}
		match_part=0;
		dp=cmd_db[i].cmd_str;
		for(j=0;j<cmd_part;j++)
		{
			if(strncmp(dp,cmd[j],strlen(cmd[j]))!=0)
			{
				if(dp[0]=='<' || dp[0]=='(')

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久午夜精品理论片中文字幕| 丝袜亚洲另类欧美综合| 亚洲黄色性网站| 另类调教123区| 色哟哟一区二区在线观看 | 91国偷自产一区二区开放时间| 欧美一区二区三区人| 亚洲人成电影网站色mp4| 久久超级碰视频| 欧美午夜电影网| 中文字幕一区日韩精品欧美| 蜜桃视频在线观看一区| 91高清在线观看| 亚洲日本电影在线| 成人小视频免费在线观看| 日韩一区二区三区高清免费看看| 亚洲欧美日韩国产另类专区| 国产suv精品一区二区6| 精品久久久久久亚洲综合网| 免费在线观看成人| 欧美日韩一区二区三区高清| 亚洲伦理在线免费看| 不卡的电影网站| 国产女人aaa级久久久级| 男人的j进女人的j一区| 色综合久久天天综合网| 国产精品久久久久一区| 懂色av一区二区三区免费观看 | 婷婷六月综合亚洲| 精品视频一区二区三区免费| 亚洲三级在线免费| 91丨porny丨国产| 中文字幕精品一区二区精品绿巨人 | 午夜av一区二区| 91福利在线看| 亚洲宅男天堂在线观看无病毒| 91麻豆国产福利精品| 中文字幕亚洲区| av一区二区三区四区| 亚洲欧洲综合另类在线| 在线免费观看日本欧美| 亚洲综合在线第一页| 欧美系列亚洲系列| 日韩精品视频网| 91精品国产综合久久久久久久| 视频一区视频二区在线观看| 欧美日韩国产一二三| 日本欧美韩国一区三区| 日韩精品一区二区三区视频| 久久国产夜色精品鲁鲁99| 欧美tickling网站挠脚心| 国模套图日韩精品一区二区| xfplay精品久久| 成人免费视频免费观看| 亚洲激情欧美激情| 5566中文字幕一区二区电影| 久久国产综合精品| 国产三级三级三级精品8ⅰ区| 成人激情动漫在线观看| 国产精品久久久久久久久免费丝袜| 99久久久久免费精品国产 | 日韩视频国产视频| 国产成人日日夜夜| 成人欧美一区二区三区| 欧美色视频在线观看| 久久国产精品99久久人人澡| 国产欧美一区在线| 色综合天天狠狠| 免费成人小视频| 成人欧美一区二区三区1314| 欧美一区二区三区婷婷月色 | 精品动漫一区二区三区在线观看| 国产成a人亚洲| 亚洲愉拍自拍另类高清精品| 精品sm在线观看| 91久久线看在观草草青青| 久久激情五月婷婷| 依依成人综合视频| 精品国产乱码久久久久久免费| 99精品视频在线播放观看| 天涯成人国产亚洲精品一区av| 久久久亚洲国产美女国产盗摄| 欧美午夜免费电影| 岛国一区二区在线观看| 日本中文一区二区三区| 亚洲蜜臀av乱码久久精品| 26uuu亚洲综合色| 欧美视频三区在线播放| 成人av在线网| 精品一区二区影视| 亚洲成人av一区| 国产精品国产精品国产专区不蜜| 日韩一区二区在线观看视频播放| 99久久婷婷国产综合精品| 久久99这里只有精品| 亚洲国产成人91porn| 亚洲天堂福利av| 国产情人综合久久777777| 91精品国产乱码| 欧美日韩一级二级| 91麻豆蜜桃一区二区三区| 国产成人亚洲综合a∨婷婷 | 欧美一级生活片| 欧美日韩亚洲综合| 色婷婷精品大视频在线蜜桃视频 | 日本怡春院一区二区| 亚洲精品视频一区二区| 国产精品久久久久影院亚瑟| 国产日韩欧美精品电影三级在线| 欧美电影免费观看高清完整版在线| 欧美日韩夫妻久久| 欧美中文字幕一区二区三区| 97久久精品人人做人人爽| 成人网在线播放| 国产剧情一区二区| 精品一区二区三区在线播放视频| 日日噜噜夜夜狠狠视频欧美人| 一区二区成人在线观看| 亚洲制服丝袜在线| 亚洲va天堂va国产va久| 香蕉影视欧美成人| 亚洲第一久久影院| 午夜激情久久久| 蜜桃一区二区三区在线| 精品一区二区三区在线视频| 久久国产婷婷国产香蕉| 久久激五月天综合精品| 国产精品正在播放| 国产成人av电影在线播放| 国产成人午夜精品5599| 成人国产精品免费观看| 不卡在线视频中文字幕| 99国内精品久久| 欧美性感一区二区三区| 欧美日韩国产123区| 日韩一级成人av| 国产欧美一区二区在线观看| 中文字幕在线观看一区| 一区二区三区日韩欧美精品| 亚洲一区二区三区中文字幕| 视频一区中文字幕| 国产一区二区三区四区五区美女| 国产99久久精品| 91国在线观看| 日韩视频免费直播| 国产日韩综合av| 亚洲啪啪综合av一区二区三区| 调教+趴+乳夹+国产+精品| 国产精品资源网| 91免费视频网| 日韩免费观看2025年上映的电影| 精品电影一区二区| 亚洲乱码国产乱码精品精小说| 三级欧美韩日大片在线看| 狠狠v欧美v日韩v亚洲ⅴ| 91丝袜美女网| 日韩精品一区二区三区蜜臀| 国产精品久久久久久久久久久免费看| 亚洲午夜久久久久| 国产一区二区三区久久久| 色综合久久久久综合体桃花网| 欧美一区二区三区白人| 亚洲欧洲av另类| 国内不卡的二区三区中文字幕| 91亚洲精品久久久蜜桃| 日韩欧美电影一二三| 亚洲视频在线一区二区| 麻豆国产91在线播放| 一本久久a久久精品亚洲| 日韩丝袜美女视频| 亚洲欧美日韩中文字幕一区二区三区| 蜜桃久久精品一区二区| 色成年激情久久综合| 久久噜噜亚洲综合| 日韩精品成人一区二区三区| 91丨porny丨蝌蚪视频| 国产日产欧美一区二区视频| 老汉av免费一区二区三区| 欧美亚洲一区三区| 国产精品二三区| 国产乱人伦精品一区二区在线观看| 欧美亚洲丝袜传媒另类| 亚洲欧美偷拍卡通变态| 国产成人精品免费看| 精品免费99久久| 免费在线欧美视频| 欧美三级韩国三级日本三斤| 国产精品福利一区| 丁香婷婷综合网| 精品1区2区在线观看| 另类小说综合欧美亚洲| 日韩一区二区三区观看| 青青草原综合久久大伊人精品 | 一区二区三区四区国产精品| 国产99精品在线观看| 亚洲精品一区二区三区蜜桃下载 | 中文字幕的久久| 国产精品一区一区三区| 精品剧情v国产在线观看在线| 日本一不卡视频|