; SPDX-License-Identifier: BSD-3-Clause
; Copyright(c) 2010-2018 Intel Corporation

; Equal Cost Multi-Path (ECMP) Routing
;
; Input packet: Ethernet/IPv4
;
; Packet buffer layout:
; #   Field Name       Offset (Bytes)   Size (Bytes)
; 0   Mbuf             0                128
; 1   Headroom         128              128
; 2   Ethernet header  256              14
; 3   IPv4 header      270              20

mempool MEMPOOL0 buffer 2304 pool 32K cache 256 cpu 0

link LINK0 dev 0000:02:00.0 rxq 1 128 MEMPOOL0 txq 1 512 promiscuous on
link LINK1 dev 0000:02:00.1 rxq 1 128 MEMPOOL0 txq 1 512 promiscuous on
link LINK2 dev 0000:06:00.0 rxq 1 128 MEMPOOL0 txq 1 512 promiscuous on
link LINK3 dev 0000:06:00.1 rxq 1 128 MEMPOOL0 txq 1 512 promiscuous on

table action profile APRT ipv4 offset 270 fwd balance offset 278 mask 00FF0000FFFFFFFFFFFFFFFFFFFFFFFF outoffset 256
table action profile APNH ipv4 offset 270 fwd encap ether

pipeline PIPELINE0 period 10 offset_port_id 0 cpu 0

pipeline PIPELINE0 port in bsz 32 link LINK0 rxq 0
pipeline PIPELINE0 port in bsz 32 link LINK1 rxq 0
pipeline PIPELINE0 port in bsz 32 link LINK2 rxq 0
pipeline PIPELINE0 port in bsz 32 link LINK3 rxq 0

pipeline PIPELINE0 port out bsz 32 link LINK0 txq 0
pipeline PIPELINE0 port out bsz 32 link LINK1 txq 0
pipeline PIPELINE0 port out bsz 32 link LINK2 txq 0
pipeline PIPELINE0 port out bsz 32 link LINK3 txq 0
pipeline PIPELINE0 port out bsz 32 sink

pipeline PIPELINE0 table match lpm ipv4 offset 286 size 4K action APRT
pipeline PIPELINE0 table match array offset 256 size 64K action APNH

pipeline PIPELINE0 port in 0 table 0
pipeline PIPELINE0 port in 1 table 0
pipeline PIPELINE0 port in 2 table 0
pipeline PIPELINE0 port in 3 table 0

thread 1 pipeline PIPELINE0 enable

pipeline PIPELINE0 table 0 rule add match default action fwd port 4
pipeline PIPELINE0 table 0 rule add match lpm ipv4 100.0.0.0 10 action fwd table 1 balance 0 0 0 0 1 1 2 2
pipeline PIPELINE0 table 0 rule add match lpm ipv4 100.64.0.0 10 action fwd table 1 balance 1 1 1 1 2 2 3 3
pipeline PIPELINE0 table 0 rule add match lpm ipv4 100.128.0.0 10 action fwd table 1 balance 2 2 2 2 3 3 0 0
pipeline PIPELINE0 table 0 rule add match lpm ipv4 100.192.0.0 10 action fwd table 1 balance 3 3 3 3 0 0 1 1

pipeline PIPELINE0 table 1 rule add match array 0 action fwd port 0 encap ether a0:a1:a2:a3:a4:a5 00:01:02:03:04:05
pipeline PIPELINE0 table 1 rule add match array 1 action fwd port 1 encap ether b0:b1:b2:b3:b4:b5 10:11:12:13:14:15
pipeline PIPELINE0 table 1 rule add match array 2 action fwd port 2 encap ether c0:c1:c2:c3:c4:c5 20:21:22:23:24:25
pipeline PIPELINE0 table 1 rule add match array 3 action fwd port 3 encap ether d0:d1:d2:d3:d4:d5 30:31:32:33:34:35
