查询protocol对应的条目时为空

文章讲述了在遇到查询conn_whitelist表中protocol字段为空的情况时,如何通过查询映射表protocol_map找到对应port,并进一步获取所需数据的方法。

@Override
	public Map<String, Object> findByCondition(Map<String, Object> map,
			Page page, String path) {
		Map<String,Object> mapResult = new HashMap<String,Object>();//存放查询结果
		Map<String,Object> map2 = MapUtil.TransNullToStr(map);
		long src_ip = IpUtils.ipStringToLong(map2.get("src_ip").toString().trim());
		String src_port = map2.get("src_port").toString().trim();
		long dst_ip = IpUtils.ipStringToLong(map2.get("dst_ip").toString().trim());
		String dst_port = map2.get("dst_port").toString().trim();
		String protocol = map2.get("protocol").toString().trim();

		Query<WhiteListModel> q=whiteListDao.createQuery().order("-_id");
		//构造查询条件
		if(src_ip != 0)
		{
			q.criteria("src_ip").equal(src_ip);
		}
		if(!src_port.equals(""))
		{
			q.criteria("src_port").equal(src_port);
		}
		if(dst_ip != 0)
		{
			q.criteria("dst_ip").equal(dst_ip);
		}
		if(!dst_port.equals(""))
		{
			q.criteria("dst_port").equal(Integer.parseInt(dst_port));
		}
		if(!protocol.equals(""))
		{
		   q.criteria("protocol").equal(protocol);
		}
		//限制查询的条数
		q=q.limit(page.getPageSize()).offset((page.getCurrentPageNo()-1)*page.getPageSize());
如果输入一个具体的协议,比如telnet,如果直接去存放数据的conn_whitelist表里查找“protocol”

而conn_whitelist表中,protocol都是unknown的

解决办法:

去映射表protocol_map中,根据协议名,找到对应的port(即conn_whitelist表中的dst_port),再根据dst_port查询到对应的数据即可

if(!protocol.equals(""))
		{
		    ProtocolMap protocolMap=new ProtocolMap();
		    protocolMap=protocolMapService.findOne("protocolName",protocol);//找到protocolName是protocol的条目,protocol是从前台传过来的要查询的protocol
		    if (protocolMap!=null)//在map中能找到
		    {
		    	dst_port = protocolMap.getPort();//protocol对应的端口
		    	q.criteria("dst_port").equal(Integer.parseInt(dst_port));
		    }
		    else{
		    	q.criteria("protocol").equal(protocol);
		    }

这里用到了一些MongoDB的查询语句等,所以写这一小段,是学长给讲了两遍,然后死磕一天牺牲午饭换来的。。呜呜,现在好饿
注:手测该用例,每种Template各配置一条 DUT默认配置启动,P1-3与STC1-3相连 参考配置,规格数为16: # vlan 2-12 # protocol-vlan template name "test0" frame ether_2 ether-type 1000 protocol-vlan template name "test1" frame ether_2 ether-type 1001 protocol-vlan template name "test2" frame ether_2 ether-type 1002 protocol-vlan template name "test3" frame ether_2 ether-type 1003 protocol-vlan template name "test4" frame ether_2 ether-type 1004 protocol-vlan template name "test5" frame ether_2 ether-type 1005 protocol-vlan template name "test6" frame ether_2 ether-type 1006 protocol-vlan template name "test7" frame ether_2 ether-type 1007 protocol-vlan template name "test8" frame ether_2 ether-type 1008 protocol-vlan template name "test9" frame ether_2 ether-type 1009 protocol-vlan template name "test10" frame ether_2 ether-type 1010 protocol-vlan vlan 1 priority 7 template 1 protocol-vlan vlan 5 priority 6 template 16 protocol-vlan vlan 2 priority 6 template 6 protocol-vlan vlan 3 priority 5 template 7 protocol-vlan vlan 4 priority 5 template 8 protocol-vlan vlan 5 priority 4 template 9 protocol-vlan vlan 6 priority 4 template 10 protocol-vlan vlan 7 priority 3 template 11 protocol-vlan vlan 8 priority 3 template 12 protocol-vlan vlan 9 priority 2 template 13 protocol-vlan vlan 10 priority 2 template 14 protocol-vlan vlan 11 priority 2 template 15 # interface port-channel 1 switchport general allowed vlan 1 tagged protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 # interface vlan 1 ip address-alloc dhcp ipv6 enable # interface ten-gigabitEthernet 1/0/1 protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 channel-group 1 mode on # interface ten-gigabitEthernet 1/0/2 switchport general allowed vlan 1,5 tagged protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 # interface ten-gigabitEthernet 1/0/3 switchport general allowed vlan 5 tagged no switchport general allowed vlan 1 protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 # interface ten-gigabitEthernet 1/0/4 protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 # interface ten-gigabitEthernet 1/0/5 protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 # interface ten-gigabitEthernet 1/0/6 protocol-vlan group 1 protocol-vlan group 2 protocol-vlan group 3 protocol-vlan group 4 protocol-vlan group 5 protocol-vlan group 6 protocol-vlan group 7 protocol-vlan group 8 protocol-vlan group 9 protocol-vlan group 10 protocol-vlan group 11 protocol-vlan group 12 # 1、将P1配置为LAG1,创建满规格的Ethernet II templates; 2、创建满规格的protocol vlan: Template1,vid1,priority随机,绑定至全部端口与汇聚组; Template2,vid2,priority随机,绑定至全部端口与汇聚组; ...... Template_N,vid_N,priority随机,绑定至全部端口与汇聚组; 3、将LAG1、P2加入vid1 tagged,P2-3加入vid_N tagged;P3从vid1中去除。 3、样机保存配置重启,待样机启动后,检查配置未丢失; 4、在STC1上创建一条untag广播包,ethernet type修改为Template1,burst模式发送100个,检查只有STC2可以收到,抓包检查带vid1 tag,priority字段与条目1一致; 在STC2上创建一条untag广播包,ethernet type修改为Template_N,burst模式发送100个,检查只有STC3可以收到,抓包检查带vid_N tag,priority字段与条目N一致;【这一步是为什么,按理说不是匹配不到吗】
最新发布
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值