1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203 | [root@ovn1 ~]# ovn-sbctl lflow-list
Datapath: "s0" (63c97e9f-194e-49b1-b075-661cd2132895) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "port01"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "port02"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "s0r1"), action=(next;)
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=2 (ls_in_port_sec_nd ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_pre_acl ), priority=110 , match=(eth.dst == fa:bb:da:7b:a8:58), action=(next;)
table=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_pre_lb ), priority=110 , match=(eth.dst == fa:bb:da:7b:a8:58), action=(next;)
table=4 (ls_in_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra), action=(next;)
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_acl ), priority=34000, match=(eth.dst == fa:bb:da:7b:a8:58), action=(next;)
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_qos_mark ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_qos_meter ), priority=0 , match=(1), action=(next;)
table=9 (ls_in_lb ), priority=0 , match=(1), action=(next;)
table=10(ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=10(ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=10(ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=11(ls_in_pre_hairpin ), priority=0 , match=(1), action=(next;)
table=12(ls_in_hairpin ), priority=1 , match=(reg0[6] == 1), action=(eth.dst <-> eth.src;outport = inport;flags.loopback = 1;output;)
table=12(ls_in_hairpin ), priority=0 , match=(1), action=(next;)
table=13(ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=14(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=15(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=16(ls_in_dns_lookup ), priority=0 , match=(1), action=(next;)
table=17(ls_in_dns_response ), priority=0 , match=(1), action=(next;)
table=18(ls_in_external_port), priority=0 , match=(1), action=(next;)
table=19(ls_in_l2_lkup ), priority=110 , match=(eth.dst == fa:bb:da:7b:a8:58), action=(handle_svc_check(inport);)
table=19(ls_in_l2_lkup ), priority=80 , match=(eth.src == { 00:00:00:00:00:ff} && (arp.op == 1 || nd_ns)), action=(outport = "_MC_flood"; output;)
table=19(ls_in_l2_lkup ), priority=75 , match=(flags[1] == 0 && arp.op == 1 && arp.tpa == { 10.0.0.254}), action=(outport = "s0r1"; output;)
table=19(ls_in_l2_lkup ), priority=75 , match=(flags[1] == 0 && nd_ns && nd.target == { fe80::200:ff:fe00:ff}), action=(outport = "s0r1"; output;)
table=19(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=19(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:01), action=(outport = "port01"; output;)
table=19(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:02), action=(outport = "port02"; output;)
table=19(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:00:ff), action=(outport = "s0r1"; output;)
Datapath: "s0" (63c97e9f-194e-49b1-b075-661cd2132895) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=110 , match=(eth.src == fa:bb:da:7b:a8:58), action=(next;)
table=0 (ls_out_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra), action=(next;)
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_pre_acl ), priority=110 , match=(eth.src == fa:bb:da:7b:a8:58), action=(next;)
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_acl ), priority=34000, match=(eth.src == fa:bb:da:7b:a8:58), action=(next;)
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
table=5 (ls_out_qos_mark ), priority=0 , match=(1), action=(next;)
table=6 (ls_out_qos_meter ), priority=0 , match=(1), action=(next;)
table=7 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=7 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=7 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=8 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=9 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
table=9 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "port01"), action=(output;)
table=9 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "port02"), action=(output;)
table=9 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "s0r1"), action=(output;)
Datapath: "s1" (7ba84139-1ab7-47fe-874c-6956be31ab0a) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "port11"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "port12"), action=(next;)
table=0 (ls_in_port_sec_l2 ), priority=50 , match=(inport == "s1r1"), action=(next;)
table=1 (ls_in_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=2 (ls_in_port_sec_nd ), priority=0 , match=(1), action=(next;)
table=3 (ls_in_pre_acl ), priority=110 , match=(eth.dst == fa:bb:da:7b:a8:58), action=(next;)
table=3 (ls_in_pre_acl ), priority=0 , match=(1), action=(next;)
table=4 (ls_in_pre_lb ), priority=110 , match=(eth.dst == fa:bb:da:7b:a8:58), action=(next;)
table=4 (ls_in_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra), action=(next;)
table=4 (ls_in_pre_lb ), priority=0 , match=(1), action=(next;)
table=5 (ls_in_pre_stateful ), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=5 (ls_in_pre_stateful ), priority=0 , match=(1), action=(next;)
table=6 (ls_in_acl ), priority=34000, match=(eth.dst == fa:bb:da:7b:a8:58), action=(next;)
table=6 (ls_in_acl ), priority=0 , match=(1), action=(next;)
table=7 (ls_in_qos_mark ), priority=0 , match=(1), action=(next;)
table=8 (ls_in_qos_meter ), priority=0 , match=(1), action=(next;)
table=9 (ls_in_lb ), priority=0 , match=(1), action=(next;)
table=10(ls_in_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=10(ls_in_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=10(ls_in_stateful ), priority=0 , match=(1), action=(next;)
table=11(ls_in_pre_hairpin ), priority=0 , match=(1), action=(next;)
table=12(ls_in_hairpin ), priority=1 , match=(reg0[6] == 1), action=(eth.dst <-> eth.src;outport = inport;flags.loopback = 1;output;)
table=12(ls_in_hairpin ), priority=0 , match=(1), action=(next;)
table=13(ls_in_arp_rsp ), priority=0 , match=(1), action=(next;)
table=14(ls_in_dhcp_options ), priority=0 , match=(1), action=(next;)
table=15(ls_in_dhcp_response), priority=0 , match=(1), action=(next;)
table=16(ls_in_dns_lookup ), priority=0 , match=(1), action=(next;)
table=17(ls_in_dns_response ), priority=0 , match=(1), action=(next;)
table=18(ls_in_external_port), priority=0 , match=(1), action=(next;)
table=19(ls_in_l2_lkup ), priority=110 , match=(eth.dst == fa:bb:da:7b:a8:58), action=(handle_svc_check(inport);)
table=19(ls_in_l2_lkup ), priority=80 , match=(eth.src == { 00:00:00:00:01:ff} && (arp.op == 1 || nd_ns)), action=(outport = "_MC_flood"; output;)
table=19(ls_in_l2_lkup ), priority=75 , match=(flags[1] == 0 && arp.op == 1 && arp.tpa == { 10.0.1.254}), action=(outport = "s1r1"; output;)
table=19(ls_in_l2_lkup ), priority=75 , match=(flags[1] == 0 && nd_ns && nd.target == { fe80::200:ff:fe00:1ff}), action=(outport = "s1r1"; output;)
table=19(ls_in_l2_lkup ), priority=70 , match=(eth.mcast), action=(outport = "_MC_flood"; output;)
table=19(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:01), action=(outport = "port11"; output;)
table=19(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:02), action=(outport = "port12"; output;)
table=19(ls_in_l2_lkup ), priority=50 , match=(eth.dst == 00:00:00:00:01:ff), action=(outport = "s1r1"; output;)
Datapath: "s1" (7ba84139-1ab7-47fe-874c-6956be31ab0a) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=110 , match=(eth.src == fa:bb:da:7b:a8:58), action=(next;)
table=0 (ls_out_pre_lb ), priority=110 , match=(nd || nd_rs || nd_ra), action=(next;)
table=0 (ls_out_pre_lb ), priority=0 , match=(1), action=(next;)
table=1 (ls_out_pre_acl ), priority=110 , match=(eth.src == fa:bb:da:7b:a8:58), action=(next;)
table=1 (ls_out_pre_acl ), priority=0 , match=(1), action=(next;)
table=2 (ls_out_pre_stateful), priority=100 , match=(reg0[0] == 1), action=(ct_next;)
table=2 (ls_out_pre_stateful), priority=0 , match=(1), action=(next;)
table=3 (ls_out_lb ), priority=0 , match=(1), action=(next;)
table=4 (ls_out_acl ), priority=34000, match=(eth.src == fa:bb:da:7b:a8:58), action=(next;)
table=4 (ls_out_acl ), priority=0 , match=(1), action=(next;)
table=5 (ls_out_qos_mark ), priority=0 , match=(1), action=(next;)
table=6 (ls_out_qos_meter ), priority=0 , match=(1), action=(next;)
table=7 (ls_out_stateful ), priority=100 , match=(reg0[1] == 1), action=(ct_commit(ct_label=0/1); next;)
table=7 (ls_out_stateful ), priority=100 , match=(reg0[2] == 1), action=(ct_lb;)
table=7 (ls_out_stateful ), priority=0 , match=(1), action=(next;)
table=8 (ls_out_port_sec_ip ), priority=0 , match=(1), action=(next;)
table=9 (ls_out_port_sec_l2 ), priority=100 , match=(eth.mcast), action=(output;)
table=9 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "port11"), action=(output;)
table=9 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "port12"), action=(output;)
table=9 (ls_out_port_sec_l2 ), priority=50 , match=(outport == "s1r1"), action=(output;)
Datapath: "r1" (df1fbb81-4fde-4585-a7bd-5e03b7961947) Pipeline: ingress
table=0 (lr_in_admission ), priority=100 , match=(vlan.present || eth.src[40]), action=(drop;)
table=0 (lr_in_admission ), priority=50 , match=(eth.dst == 00:00:00:00:00:ff && inport == "r1s0"), action=(next;)
table=0 (lr_in_admission ), priority=50 , match=(eth.dst == 00:00:00:00:01:ff && inport == "r1s1"), action=(next;)
table=0 (lr_in_admission ), priority=50 , match=(eth.mcast && inport == "r1s0"), action=(next;)
table=0 (lr_in_admission ), priority=50 , match=(eth.mcast && inport == "r1s1"), action=(next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(arp.op == 2), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "r1s0" && arp.spa == 10.0.0.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(inport == "r1s1" && arp.spa == 10.0.1.0/24 && arp.op == 1), action=(reg9[2] = lookup_arp(inport, arp.spa, arp.sha); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_na), action=(reg9[2] = lookup_nd(inport, nd.target, nd.tll); next;)
table=1 (lr_in_lookup_neighbor), priority=100 , match=(nd_ns), action=(reg9[2] = lookup_nd(inport, ip6.src, nd.sll); next;)
table=1 (lr_in_lookup_neighbor), priority=0 , match=(1), action=(reg9[3] = 1; next;)
table=2 (lr_in_learn_neighbor), priority=100 , match=(reg9[3] == 1 || reg9[2] == 1), action=(next;)
table=2 (lr_in_learn_neighbor), priority=90 , match=(arp), action=(put_arp(inport, arp.spa, arp.sha); next;)
table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_na), action=(put_nd(inport, nd.target, nd.tll); next;)
table=2 (lr_in_learn_neighbor), priority=90 , match=(nd_ns), action=(put_nd(inport, ip6.src, nd.sll); next;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip4.src == {10.0.0.254, 10.0.0.255} && reg9[0] == 0), action=(drop;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip4.src == {10.0.1.254, 10.0.1.255} && reg9[0] == 0), action=(drop;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip4.src_mcast ||ip4.src == 255.255.255.255 || ip4.src == 127.0.0.0/8 || ip4.dst == 127.0.0.0/8 || ip4.src == 0.0.0.0/8 || ip4.dst == 0.0.0.0/8), action=(drop;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip6.dst == fe80::200:ff:fe00:1ff && udp.src == 547 && udp.dst == 546), action=(reg0 = 0; handle_dhcpv6_reply;)
table=3 (lr_in_ip_input ), priority=100 , match=(ip6.dst == fe80::200:ff:fe00:ff && udp.src == 547 && udp.dst == 546), action=(reg0 = 0; handle_dhcpv6_reply;)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s0" && arp.spa == 10.0.0.0/24 && arp.tpa == 10.0.0.254 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:00:00:00:ff; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:00:00:00:ff; arp.tpa = arp.spa; arp.spa = 10.0.0.254; outport = "r1s0"; flags.loopback = 1; output;)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s0" && nd_ns && ip6.dst == {fe80::200:ff:fe00:ff, ff02::1:ff00:ff} && nd.target == fe80::200:ff:fe00:ff), action=(nd_na_router { eth.src = 00:00:00:00:00:ff; ip6.src = fe80::200:ff:fe00:ff; nd.target = fe80::200:ff:fe00:ff; nd.tll = 00:00:00:00:00:ff; outport = inport; flags.loopback = 1; output; };)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s1" && arp.spa == 10.0.1.0/24 && arp.tpa == 10.0.1.254 && arp.op == 1), action=(eth.dst = eth.src; eth.src = 00:00:00:00:01:ff; arp.op = 2; /* ARP reply */ arp.tha = arp.sha; arp.sha = 00:00:00:00:01:ff; arp.tpa = arp.spa; arp.spa = 10.0.1.254; outport = "r1s1"; flags.loopback = 1; output;)
table=3 (lr_in_ip_input ), priority=90 , match=(inport == "r1s1" && nd_ns && ip6.dst == {fe80::200:ff:fe00:1ff, ff02::1:ff00:1ff} && nd.target == fe80::200:ff:fe00:1ff), action=(nd_na_router { eth.src = 00:00:00:00:01:ff; ip6.src = fe80::200:ff:fe00:1ff; nd.target = fe80::200:ff:fe00:1ff; nd.tll = 00:00:00:00:01:ff; outport = inport; flags.loopback = 1; output; };)
table=3 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 10.0.0.254 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=90 , match=(ip4.dst == 10.0.1.254 && icmp4.type == 8 && icmp4.code == 0), action=(ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 0; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:ff:fe00:1ff && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=90 , match=(ip6.dst == fe80::200:ff:fe00:ff && icmp6.type == 128 && icmp6.code == 0), action=(ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 129; flags.loopback = 1; next; )
table=3 (lr_in_ip_input ), priority=85 , match=(arp || nd), action=(drop;)
table=3 (lr_in_ip_input ), priority=84 , match=(nd_rs || nd_ra), action=(next;)
table=3 (lr_in_ip_input ), priority=83 , match=(ip6.mcast_rsvd), action=(drop;)
table=3 (lr_in_ip_input ), priority=82 , match=(ip4.mcast || ip6.mcast), action=(drop;)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip4.dst <-> ip4.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag && udp), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip4.dst <-> ip4.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag && udp), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip6.dst <-> ip6.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag && udp), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 4; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag && tcp), action=(tcp_reset {eth.dst <-> eth.src; ip6.dst <-> ip6.src; next; };)
table=3 (lr_in_ip_input ), priority=80 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag && udp), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 4; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip4 && ip4.dst == 10.0.0.254 && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 2; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip4 && ip4.dst == 10.0.1.254 && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; ip4.dst <-> ip4.src; ip.ttl = 255; icmp4.type = 3; icmp4.code = 2; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:1ff && !ip.later_frag), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=70 , match=(ip6 && ip6.dst == fe80::200:ff:fe00:ff && !ip.later_frag), action=(icmp6 {eth.dst <-> eth.src; ip6.dst <-> ip6.src; ip.ttl = 255; icmp6.type = 1; icmp6.code = 3; next; };)
table=3 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {10.0.0.254} || ip6.dst == {fe80::200:ff:fe00:ff}), action=(drop;)
table=3 (lr_in_ip_input ), priority=60 , match=(ip4.dst == {10.0.1.254} || ip6.dst == {fe80::200:ff:fe00:1ff}), action=(drop;)
table=3 (lr_in_ip_input ), priority=50 , match=(eth.bcast), action=(drop;)
table=3 (lr_in_ip_input ), priority=40 , match=(inport == "r1s0" && ip4 && ip.ttl == {0, 1} && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; icmp4.type = 11; /* Time exceeded */ icmp4.code = 0; /* TTL exceeded in transit */ ip4.dst = ip4.src; ip4.src = 10.0.0.254; ip.ttl = 255; next; };)
table=3 (lr_in_ip_input ), priority=40 , match=(inport == "r1s1" && ip4 && ip.ttl == {0, 1} && !ip.later_frag), action=(icmp4 {eth.dst <-> eth.src; icmp4.type = 11; /* Time exceeded */ icmp4.code = 0; /* TTL exceeded in transit */ ip4.dst = ip4.src; ip4.src = 10.0.1.254; ip.ttl = 255; next; };)
table=3 (lr_in_ip_input ), priority=30 , match=(ip4 && ip.ttl == {0, 1}), action=(drop;)
table=3 (lr_in_ip_input ), priority=0 , match=(1), action=(next;)
table=4 (lr_in_defrag ), priority=0 , match=(1), action=(next;)
table=5 (lr_in_unsnat ), priority=0 , match=(1), action=(next;)
table=6 (lr_in_dnat ), priority=0 , match=(1), action=(next;)
table=7 (lr_in_nd_ra_options), priority=0 , match=(1), action=(next;)
table=8 (lr_in_nd_ra_response), priority=0 , match=(1), action=(next;)
table=9 (lr_in_ip_routing ), priority=550 , match=(nd_rs || nd_ra), action=(drop;)
table=9 (lr_in_ip_routing ), priority=129 , match=(inport == "r1s0" && ip6.dst == fe80::/64), action=(ip.ttl--; reg8[0..15] = 0; xxreg0 = ip6.dst; xxreg1 = fe80::200:ff:fe00:ff; eth.src = 00:00:00:00:00:ff; outport = "r1s0"; flags.loopback = 1; next;)
table=9 (lr_in_ip_routing ), priority=129 , match=(inport == "r1s1" && ip6.dst == fe80::/64), action=(ip.ttl--; reg8[0..15] = 0; xxreg0 = ip6.dst; xxreg1 = fe80::200:ff:fe00:1ff; eth.src = 00:00:00:00:01:ff; outport = "r1s1"; flags.loopback = 1; next;)
table=9 (lr_in_ip_routing ), priority=49 , match=(ip4.dst == 10.0.0.0/24), action=(ip.ttl--; reg8[0..15] = 0; reg0 = ip4.dst; reg1 = 10.0.0.254; eth.src = 00:00:00:00:00:ff; outport = "r1s0"; flags.loopback = 1; next;)
table=9 (lr_in_ip_routing ), priority=49 , match=(ip4.dst == 10.0.1.0/24), action=(ip.ttl--; reg8[0..15] = 0; reg0 = ip4.dst; reg1 = 10.0.1.254; eth.src = 00:00:00:00:01:ff; outport = "r1s1"; flags.loopback = 1; next;)
table=10(lr_in_ip_routing_ecmp), priority=150 , match=(reg8[0..15] == 0), action=(next;)
table=11(lr_in_policy ), priority=0 , match=(1), action=(next;)
table=12(lr_in_arp_resolve ), priority=500 , match=(ip4.mcast || ip6.mcast), action=(next;)
table=12(lr_in_arp_resolve ), priority=0 , match=(ip4), action=(get_arp(outport, reg0); next;)
table=12(lr_in_arp_resolve ), priority=0 , match=(ip6), action=(get_nd(outport, xxreg0); next;)
table=13(lr_in_chk_pkt_len ), priority=0 , match=(1), action=(next;)
table=14(lr_in_larger_pkts ), priority=0 , match=(1), action=(next;)
table=15(lr_in_gw_redirect ), priority=0 , match=(1), action=(next;)
table=16(lr_in_arp_request ), priority=100 , match=(eth.dst == 00:00:00:00:00:00 && ip4), action=(arp { eth.dst = ff:ff:ff:ff:ff:ff; arp.spa = reg1; arp.tpa = reg0; arp.op = 1; output; };)
table=16(lr_in_arp_request ), priority=100 , match=(eth.dst == 00:00:00:00:00:00 && ip6), action=(nd_ns { nd.target = xxreg0; output; };)
table=16(lr_in_arp_request ), priority=0 , match=(1), action=(output;)
Datapath: "r1" (df1fbb81-4fde-4585-a7bd-5e03b7961947) Pipeline: egress
table=0 (lr_out_undnat ), priority=0 , match=(1), action=(next;)
table=1 (lr_out_snat ), priority=120 , match=(nd_ns), action=(next;)
table=1 (lr_out_snat ), priority=0 , match=(1), action=(next;)
table=2 (lr_out_egr_loop ), priority=0 , match=(1), action=(next;)
table=3 (lr_out_delivery ), priority=100 , match=(outport == "r1s0"), action=(output;)
table=3 (lr_out_delivery ), priority=100 , match=(outport == "r1s1"), action=(output;)
|