# Copyright (c) 2016-2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

[lua]
lpm4 = dofile("vpe_ipv4.lua")
user_table = dofile("vpe_user_table.lua")
dscp_table = dofile("vpe_dscp.lua")
cpe_table = dofile("vpe_cpe_table.lua")
acl_table = dofile("vpe_rules.lua")

[eal options]
-n=4 ; $sut_memory_channels
no-output=no ; disable DPDK debug output

[variables]
$master            =0
$core_inet0        =1
$core_inet1        =2
$core_cpe0         =3
$core_cpe1         =4
$core_workers_down =9-10,11-12  ;sut_vpe_wkd
$core_workers_up   =13-14,15-16 ;sut_vpe_wku
$core_tx_cpe0	   =5
$core_tx_inet0	   =6
$core_tx_cpe1      =7
$core_tx_inet1     =8
$qinq_tag          =0xa888

[port 0]
name=cpe0
mac=hardware
rx desc=2048
tx desc=2048
[port 1]
name=inet0
mac=hardware
rx desc=2048
tx desc=2048
[port 2]
name=cpe1
mac=hardware
rx desc=2048
tx desc=2048
[port 3]
name=inet1
mac=hardware
rx desc=2048
tx desc=2048

[defaults]
mempool size=70K
memcache size=512
qinq tag=$qinq_tag

[global]
start time=5
name=vPE
cpe table map=cpe0,cpe1,cpe0,cpe1

[core $master]
task=0
mode=master
tx cores=(${core_workers_up})t3m
drop=no

[core $core_inet0]
name=LB-inet0
task=0
mode=lbnetwork
rx port=inet0
untag mpls=yes
tx cores=(${core_workers_down})t0 proto=ipv4
drop=no

[core $core_inet1]
name=LB-inet1
task=0
mode=lbnetwork
rx port=inet1
untag mpls=yes
tx cores=(${core_workers_down})t0 proto=ipv4
drop=no

[core $core_cpe0]
name=LB-c0
task=0
mode=lbnetwork
mempool size=32K
rx port=cpe0
untag mpls=no
tx cores=(${core_workers_up})t0 proto=ipv4
drop=no

[core $core_cpe1]
name=LB-c1
task=0
mode=lbnetwork
mempool size=32K
rx port=cpe1
untag mpls=no
tx cores=(${core_workers_up})t0 proto=ipv4
drop=no

[core $core_workers_down]
name=W-down
task=0
mode=qinqencapv4
sub mode=pe
rx ring=yes
tx cores from cpe table=${core_tx_cpe0},${core_tx_cpe1} remap=cpe0,cpe1
drop=no
user table=user_table
cpe table=cpe_table
classify=yes
dscp=dscp_table

[core $core_workers_up]
name=W-up
task=0
mode=acl
rx ring=yes
tx cores=${self}t1
drop=no
rules=acl_table
max rules=32768

task=1
mode=police
sub mode=trtcm
police action=yellow io=green,green
police action=drop io=green,yellow
police action=drop io=green,red
police action=drop io=yellow,yellow
police action=drop io=yellow,red
police action=drop io=red,red
cir=4000000000
pir=4000000000
cbs=20480
pbs=20480
classify=yes
rx ring=yes
tx cores=${self}t2
drop=no
users=256
mark=yes
user table=user_table

task=2
mode=untag
ether type=$qinq_tag
rx ring=yes
tx cores=${self}t3
drop=no

task=3
mode=routing
add mpls=yes
rx ring=yes
tx cores from routing table=${core_tx_inet0},${core_tx_inet1},${core_tx_inet0},${core_tx_inet1}
drop=no
route table=lpm4
mark=yes
mark green=1
mark yellow=2
mark red=3

[core $core_tx_cpe0]
name=qos0
task=0
mode=qos
rx ring=yes
tx port=cpe0
drop=no
pipes=256
pipe tb rate=6250000
pipe tc rate=6250000
user table=user_table

[core $core_tx_inet0]
name=txnop
task=0
mode=nop
rx ring=yes
tx port=inet0
drop=no

[core $core_tx_cpe1]
name=qos1
task=0
mode=qos
rx ring=yes
tx port=cpe1
drop=no
pipes=256
pipe tb rate=6250000
pipe tc rate=6250000
user table=user_table

[core $core_tx_inet1]
name=txnop
task=0
mode=nop
rx ring=yes
tx port=inet1
drop=no