| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | package overlayimport (	"net"	"github.com/sirupsen/logrus"	"github.com/slackhq/nebula/config"	"github.com/slackhq/nebula/util")const DefaultMTU = 1300func NewDeviceFromConfig(c *config.C, l *logrus.Logger, tunCidr *net.IPNet, fd *int, routines int) (Device, error) {	routes, err := parseRoutes(c, tunCidr)	if err != nil {		return nil, util.NewContextualError("Could not parse tun.routes", nil, err)	}	unsafeRoutes, err := parseUnsafeRoutes(c, tunCidr)	if err != nil {		return nil, util.NewContextualError("Could not parse tun.unsafe_routes", nil, err)	}	routes = append(routes, unsafeRoutes...)	switch {	case c.GetBool("tun.disabled", false):		tun := newDisabledTun(tunCidr, c.GetInt("tun.tx_queue", 500), c.GetBool("stats.message_metrics", false), l)		return tun, nil	case fd != nil:		return newTunFromFd(			l,			*fd,			tunCidr,			c.GetInt("tun.mtu", DefaultMTU),			routes,			c.GetInt("tun.tx_queue", 500),			c.GetBool("tun.use_system_route_table", false),		)	default:		return newTun(			l,			c.GetString("tun.dev", ""),			tunCidr,			c.GetInt("tun.mtu", DefaultMTU),			routes,			c.GetInt("tun.tx_queue", 500),			routines > 1,			c.GetBool("tun.use_system_route_table", false),		)	}}
 |