P4在table中使用ternary匹配

P4支持ternary匹配,也就是对于一个匹配字段,你可以用mask指定这个字段中的哪些bits是你关心的(1表示关心,0表示忽略),从而只匹配你关心的bits的值而忽略其他的值。

那在代码中怎么使用呢?话不多说,直接上代码(P4版本为 P4_16)!

control MyIngress(inout headers hdr,
                  inout metadata meta,
                  inout standard_metadata_t standard_metadata){
	action drop() {
		mark_to_drop(standard_metadata);
	}
	
	action your_action (bit<8> param1, bit<16> param2) {
		// your action logic here
	}
	
	table ipv4_ternary {
		key = {
		    hdr.ipv4.srcAddr: ternary; //ternary匹配ipv4的 src address
		    hdr.ipv4.dstAddr: ternary; //ternary匹配ipv4的 dst address
		}
		actions = {
		    your_action;
		    drop;
		}
		default_action = drop();
		
		//以下代码用于加入表项,同时也展示了如何使用ternary匹配的特性
		const entries = {
		    // 对于每一个ternary字段,表项的值由两部分组成:value &&& mask,先value后mask,顺序一定不能错!
		    // mask表示在这个字段上希望匹配哪些bits
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值