You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
{-# LANGUAGE NamedFieldPuns #-} |
|
{-# LANGUAGE TemplateHaskell #-} |
|
|
|
module Traffic where |
|
( |
|
) |
|
|
|
data Endpoints = EUplink | EClient1 | EClient2 |
|
|
|
connections = compileConnections |
|
[ Mes.GE 1 0 1 <-> PC.Uplink |
|
, Mes.GE 1 0 21 <-> Ltp.FrontPort 1 |
|
, Mes.GE 1 0 22 <-> Ltp.FrontPort 3 |
|
, Mes.GE 1 0 23 <-> Ltp.FrontPort 5 |
|
, Mes.GE 1 0 7 <-> Ont.Port 3 1 1 |
|
, Mes.GE 1 0 8 <-> Ont.Port 3 6 1 |
|
] |
|
|
|
endpoints = compileEndpoints |
|
[ |
|
EUplink <-> Ltp.FrontPort 1 |
|
, EClient1 <-> Ont.Port 3 1 1 |
|
, EClient2 <-> Ont.Port 3 6 1 |
|
] |
|
|
|
testBroadcast = testCase "Broadcast" $ do |
|
let ltpConfig = DeviceConfig.Ltp.makeDefault { |
|
profilesCrossConnect = [ cc ] |
|
, profilesPorts = [ ports ] |
|
, interfaceOnt = |
|
[ ontConfig 3 1 { services = [ Ltp.Config.makeService "test1" ], profilePorts = "ports1" } |
|
, ontConfig 3 6 { services = [ Ltp.Config.makeService "test1" ], profilePorts = "ports1" } |
|
] |
|
} |
|
let baseMesConfig = Mes.Config.makeDefault { |
|
interfaces = |
|
[ Mes.makeInterfaceConfig (Mes.GE 1 0 12) |
|
{ |
|
switchPortMode = Access |
|
, allowedVlan = [ VlanId 3465 ] |
|
} |
|
] |
|
} |
|
let (standMesConfig, standLtpConfig) = generateConfig connections ltpConfig endpoints |
|
let mesConfig = baseMesConfig <> standMesConfig |
|
mesConfigurator <- makeMesConfigurator { line = "/dev/ttyUSB1" } |
|
ltpConfigurator <- makeLtpConfigurator { line = "/dev/ttyUSB0" } |
|
uploadConfig mesConfigurator mesConfig |
|
uploadConfig ltpConfigurator standLtpConfig |
|
sendPacket (broadcastPing `addTag` VlanId 200) EUplink |
|
awaitPacket (broadcastPing `addTag` VlanId 1000) EClient1 |
|
awaitPacket (broadcastPing `addTag` VlanId 1000) EClient2 |
|
where |
|
cc = |
|
Ltp.Config.makeCrossConnect "test1" |
|
{ |
|
replaceSide = ReplaceSideOnt |
|
, trafficModel = OneToOne |
|
, bridgeGroup = 10 |
|
, outerVid = 200 |
|
, userVid = Just 1000 |
|
} |
|
ports = |
|
Ltp.Config.makePorfilePorts "test1" |
|
{ |
|
name = "ports1" |
|
, bridgeGroup = 10 |
|
} |
|
|
|
|