使用 p4-graphs 命令将p4程序依赖关系图形化
位置:/home/wasdns/p4factory/targets/l2_switch/p4src
命令:
cd /home/wasdns/p4factory/targets/l2_switch/p4src
p4-graphs l2_switch.p4
l2_switch.p4:
//uncomment to enable openflow
//#define OPENFLOW_ENABLE
#ifdef OPENFLOW_ENABLE
#include "openflow.p4"
#endif /* OPENFLOW_ENABLE */
header_type ethernet_t {
fields {
dstAddr : 48;
srcAddr : 48;
etherType : 16;
}
}
header_type intrinsic_metadata_t {
fields {
mcast_grp : 4;
egress_rid : 4;
mcast_hash : 16;
lf_field_list: 32;
}
}
parser start {
return parse_ethernet;
}
header ethernet_t ethernet;
metadata intrinsic_metadata_t intrinsic_metadata;
parser parse_ethernet {
extract(ethernet);
#ifdef OPENFLOW_ENABLE
return select(latest.etherType) {
ETHERTYPE_BF_FABRIC : parse_fabric_header;
default : ingress;
}
#else
return ingress;
#endif /* OPENFLOW_ENABLE */
}
action _drop() {
drop();
}
action _nop() {
}
#define MAC_LEARN_RECEIVER 1024
field_list mac_learn_digest {
ethernet.srcAddr;
standard_metadata.ingress_port;
}
action mac_learn() {
generate_digest(MAC_LEARN_RECEIVER, mac_learn_digest);
}
table smac {
reads {
ethernet.srcAddr : exact;
}
actions {mac_learn; _nop;}
size : 512;
}
action forward(port) {
modify_field(standard_metadata.egress_spec, port);
}
action broadcast() {
modify_field(intrinsic_metadata.mcast_grp, 1);
}
table dmac {
reads {
ethernet.dstAddr : exact;
}
actions {
forward;
broadcast;
#ifdef OPENFLOW_ENABLE
openflow_apply;
openflow_miss;
#endif /* OPENFLOW_ENABLE */
}
size : 512;
}
table mcast_src_pruning {
reads {
standard_metadata.instance_type : exact;
}
actions {_nop; _drop;}
size : 1;
}
control ingress {
#ifdef OPENFLOW_ENABLE
apply(packet_out) {
nop {
#endif /* OPENFLOW_ENABLE */
apply(smac);
apply(dmac);
#ifdef OPENFLOW_ENABLE
}
}
process_ofpat_ingress ();
#endif /* OPENFLOW_ENABLE */
}
control egress {
if(standard_metadata.ingress_port == standard_metadata.egress_port) {
apply(mcast_src_pruning);
}
#ifdef OPENFLOW_ENABLE
process_ofpat_egress();
#endif /*OPENFLOW_ENABLE */
}
生成图片:
2016/9/26
使用 p4-graphs 命令将p4程序依赖关系图形化的更多相关文章
- Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图(转载)
Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图 2017年04月05日 10:53:13 李学凯 阅读数:104997更多 所属专栏: Intellij Idea ...
- Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图
Maven 组件界面介绍 如上图标注 1 所示,为常用的 Maven 工具栏,其中最常用的有: 第一个按钮:Reimport All Maven Projects 表示根据 pom.xml 重新载入项 ...
- Ambari服务依赖关系图生成脚本
1. 生成服务依赖关系 #!/usr/bin/python import sys import commands import json def genDependString(ip): url=&q ...
- C/C++源代码的Include依赖关系图
前一篇博文中我曾仔细介绍过如何查看C/C++代码的依赖项关系图,在这篇文章中我将会介绍如何使用Visualization and Modeling Feature Pack 工具包,查看C/C++源代 ...
- rpmgraph - 显示 RPM 软件包依赖关系图
SYNOPSIS rpmgraph PACKAGE_FILE ... DESCRIPTION rpmgraph 使用 PACKAGE_FILE 参数来产生一个软件包依赖关系图.每个 PACKAGE_F ...
- 教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)
一键获取微信小程序源代码 Tips: 一键获取微信小程序源码, 使用了C#加nodejs制作 直接解压在D盘根目录下后就可以使用 将小程序文件放到 wxapkg目录下3 这个目录下有一些demo 可以 ...
- MyBatis源码分析(1)——整体依赖关系图
后续补充更新
- SpringMvc+Spring+Mybatis的jar包依赖关系图
- 源码分析:静态分析 C 程序函数调用关系图
http://www.tinylab.org/callgraph-draw-the-calltree-of-c-functions/
随机推荐
- 【BZOJ4144】[AMPPZ2014]Petrol 最短路+离线+最小生成树
[BZOJ4144][AMPPZ2014]Petrol Description 给定一个n个点.m条边的带权无向图,其中有s个点是加油站. 每辆车都有一个油量上限b,即每次行走距离不能超过b,但在加油 ...
- js调试模式怎么看变量是在哪里定义的?
1. 2.
- 基础概念 之 Spark on Yarn
先抛出问题:Spark on Yarn有cluster和client两种模式,它们有什么区别? 用Jupyter写Spark时,只能使用client模式,为什么? 写一篇文章,搞清楚 Spark on ...
- Spring 加载配置文件的方式
我们常用的加载context文件的方法有如下三个: 1.FileSystemXmlApplicationContext 这个方法是从文件绝对路径加载配置文件,例如: ApplicationContex ...
- Composer 添加 Laravel-china 的国内源
不知道由于什么原因,原来的 Composer 的国内镜像 https://pkg.phpcomposer.com/ 不能正常使用,经常连不上. 找了半天,发现还有一个 laravel-china 的国 ...
- 常用meta标签及说明
1.charset 定义文档的字符编码 例如: <meta charset="UTF-8"> 2. name 把 content 属性关联到一个名称,其属性有 ...
- [ASP.NET 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但 ...
- 使用webmagic搭建一个简单的爬虫
刚刚接触爬虫,听说webmagic很不错,于是就了解了一下. webmagic的是一个无须配置.便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫. 这句话说的真的一点都不假 ...
- 前端程序员:月薪 5K 到 5 万
入行行头:5 大硬件 请准备好以下东西 一颗人类的大脑:智商在平均水平线以上即可 一份强烈的渴望:我的代码要可以运行在任何一个有浏览器的设备上. 一台笔记本电脑:不需要花费很多钱得那种,只要它可以运行 ...
- 【css a标签 鼠标悬浮时变手型】
<a href="#" style="cursor:pointer">




