blob: 40b5942b2cbe49d2a34faf7ab52f886c42162055 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package router
import (
"chromiumos/tast/remote/wificell/router/common/support"
)
// Base contains only the base router functionality all WiFi testing router
// controllers must support.
//
// Use this in places where you are passing around a router instance where
// you do not need a specific piece of router functionality aside from what
// this supports. When you need specific supported router functionality,
// simply cast this instance to the appropriate interface or a specific router
// type directly. There are helper functions in the support package for casting
// support.Router instances to different support interfaces, which can be used
// with this as well since Base is functionality equivalent to support.Router.
type Base interface {
support.Router
}
// Standard contains the functionality the standard WiFi testing router
// controller should support.
//
// Use this in tests if you are not specifically testing with a router that has
// non-standard support. There is no guarantee of what type of router this is; it
// just guarantees that the given router controller instance supports controlling
// these features.
//
// If you require a specific support.Type of router, use its respective router
// implementation instead.
type Standard interface {
Base
support.Logs
support.Capture
support.Hostapd
support.DHCP
support.IfaceManipulation
}
// StandardWithFrameSender includes all the functionality in Standard as well
// as support.FrameSender.
type StandardWithFrameSender interface {
Standard
support.FrameSender
}
// StandardWithBridgeAndVeth includes all the functionality in Standard as well
// as support.Bridge, support.Veth, and support.VethBridgeBinding.
type StandardWithBridgeAndVeth interface {
Standard
support.Bridge
support.Veth
support.VethBridgeBinding
}