Allow setting IfName to 'none' to run without TUN/TAP

This commit is contained in:
Neil Alexander 2018-02-15 22:29:13 +00:00
parent 120ce8bd2f
commit 02473158d4
3 changed files with 17 additions and 5 deletions

View File

@ -212,11 +212,13 @@ func (c *Core) DEBUG_startTun(ifname string, iftapmode bool) {
func (c *Core) DEBUG_startTunWithMTU(ifname string, iftapmode bool, mtu int) {
addr := c.DEBUG_getAddr()
straddr := fmt.Sprintf("%s/%v", net.IP(addr[:]).String(), 8*len(address_prefix))
if ifname != "none" {
err := c.tun.setup(ifname, iftapmode, straddr, mtu)
if err != nil {
panic(err)
}
go c.tun.read()
}
go c.tun.write()
}

View File

@ -33,6 +33,9 @@ func (tun *tunDevice) init(core *Core) {
func (tun *tunDevice) write() error {
for {
data := <-tun.recv
if tun.iface == nil {
continue
}
if tun.iface.IsTAP() {
var frame ethernet.Frame
frame.Prepare(
@ -88,5 +91,8 @@ func (tun *tunDevice) read() error {
}
func (tun *tunDevice) close() error {
if tun.iface == nil {
return nil
}
return tun.iface.Close()
}

View File

@ -264,7 +264,11 @@ func main() {
logger.Println("Initializing...")
n := node{}
n.init(cfg, logger)
logger.Println("Starting tun...")
if cfg.IfName != "none" {
logger.Println("Starting TUN/TAP...")
} else {
logger.Println("Not starting TUN/TAP")
}
//n.core.DEBUG_startTun(cfg.IfName) // 1280, the smallest supported MTU
n.core.DEBUG_startTunWithMTU(cfg.IfName, cfg.IfTAPMode, cfg.IfMTU) // Largest supported MTU
defer func() {