cmd/vnet: add --blend and --pcap flags
Updates #13038 Change-Id: Id16ea9eb94447a3d9651215f04b2525daf10b3eb Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
3904e4d175
commit
3b70968c25
|
@ -22,11 +22,13 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
listen = flag.String("listen", "/tmp/qemu.sock", "path to listen on")
|
||||
nat = flag.String("nat", "easy", "type of NAT to use")
|
||||
nat2 = flag.String("nat2", "hard", "type of NAT to use for second network")
|
||||
portmap = flag.Bool("portmap", false, "enable portmapping")
|
||||
dgram = flag.Bool("dgram", false, "enable datagram mode; for use with macOS Hypervisor.Framework and VZFileHandleNetworkDeviceAttachment")
|
||||
listen = flag.String("listen", "/tmp/qemu.sock", "path to listen on")
|
||||
nat = flag.String("nat", "easy", "type of NAT to use")
|
||||
nat2 = flag.String("nat2", "hard", "type of NAT to use for second network")
|
||||
portmap = flag.Bool("portmap", false, "enable portmapping")
|
||||
dgram = flag.Bool("dgram", false, "enable datagram mode; for use with macOS Hypervisor.Framework and VZFileHandleNetworkDeviceAttachment")
|
||||
blend = flag.Bool("blend", true, "blend reality (controlplane.tailscale.com and DERPs) into the virtual network")
|
||||
pcapFile = flag.String("pcap", "", "if non-empty, filename to write pcap")
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
@ -57,6 +59,8 @@ func main() {
|
|||
}
|
||||
|
||||
var c vnet.Config
|
||||
c.SetPCAPFile(*pcapFile)
|
||||
c.SetBlendReality(*blend)
|
||||
node1 := c.AddNode(c.AddNetwork("2.1.1.1", "192.168.1.1/24", vnet.NAT(*nat)))
|
||||
c.AddNode(c.AddNetwork("2.2.2.2", "10.2.0.1/16", vnet.NAT(*nat2)))
|
||||
if *portmap {
|
||||
|
|
|
@ -29,19 +29,31 @@ import (
|
|||
// values to modify the config before calling NewServer.
|
||||
// Once the NewServer is called, Config is no longer used.
|
||||
type Config struct {
|
||||
nodes []*Node
|
||||
networks []*Network
|
||||
pcapFile string
|
||||
nodes []*Node
|
||||
networks []*Network
|
||||
pcapFile string
|
||||
blendReality bool
|
||||
}
|
||||
|
||||
// SetPCAPFile sets the filename to write a pcap file to,
|
||||
// or empty to disable pcap file writing.
|
||||
func (c *Config) SetPCAPFile(file string) {
|
||||
c.pcapFile = file
|
||||
}
|
||||
|
||||
// NumNodes returns the number of nodes in the configuration.
|
||||
func (c *Config) NumNodes() int {
|
||||
return len(c.nodes)
|
||||
}
|
||||
|
||||
// SetBlendReality sets whether to blend the real controlplane.tailscale.com and
|
||||
// DERP servers into the virtual network. This is mostly useful for interactive
|
||||
// testing when working on natlab.
|
||||
func (c *Config) SetBlendReality(v bool) {
|
||||
c.blendReality = v
|
||||
}
|
||||
|
||||
// FirstNetwork returns the first network in the config, or nil if none.
|
||||
func (c *Config) FirstNetwork() *Network {
|
||||
if len(c.networks) == 0 {
|
||||
return nil
|
||||
|
|
Loading…
Reference in New Issue