|  | // Copyright 2013 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // +build darwin dragonfly freebsd netbsd openbsd | 
|  |  | 
|  | package net | 
|  |  | 
|  | import ( | 
|  | "errors" | 
|  | "fmt" | 
|  | "os/exec" | 
|  | "runtime" | 
|  | ) | 
|  |  | 
|  | func (ti *testInterface) setBroadcast(vid int) error { | 
|  | if runtime.GOOS == "openbsd" { | 
|  | ti.name = fmt.Sprintf("vether%d", vid) | 
|  | } else { | 
|  | ti.name = fmt.Sprintf("vlan%d", vid) | 
|  | } | 
|  | xname, err := exec.LookPath("ifconfig") | 
|  | if err != nil { | 
|  | return err | 
|  | } | 
|  | ti.setupCmds = append(ti.setupCmds, &exec.Cmd{ | 
|  | Path: xname, | 
|  | Args: []string{"ifconfig", ti.name, "create"}, | 
|  | }) | 
|  | ti.teardownCmds = append(ti.teardownCmds, &exec.Cmd{ | 
|  | Path: xname, | 
|  | Args: []string{"ifconfig", ti.name, "destroy"}, | 
|  | }) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | func (ti *testInterface) setPointToPoint(suffix int) error { | 
|  | ti.name = fmt.Sprintf("gif%d", suffix) | 
|  | xname, err := exec.LookPath("ifconfig") | 
|  | if err != nil { | 
|  | return err | 
|  | } | 
|  | ti.setupCmds = append(ti.setupCmds, &exec.Cmd{ | 
|  | Path: xname, | 
|  | Args: []string{"ifconfig", ti.name, "create"}, | 
|  | }) | 
|  | ti.setupCmds = append(ti.setupCmds, &exec.Cmd{ | 
|  | Path: xname, | 
|  | Args: []string{"ifconfig", ti.name, "inet", ti.local, ti.remote}, | 
|  | }) | 
|  | ti.teardownCmds = append(ti.teardownCmds, &exec.Cmd{ | 
|  | Path: xname, | 
|  | Args: []string{"ifconfig", ti.name, "destroy"}, | 
|  | }) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | func (ti *testInterface) setLinkLocal(suffix int) error { | 
|  | return errors.New("not yet implemented for BSD") | 
|  | } |