mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-21 12:28:39 +00:00
wgengine/router: simplify some cmd invocations.
Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
parent
e3559d1c45
commit
7618d7e677
@ -6,9 +6,9 @@ package router
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
@ -49,28 +49,30 @@ func newUserspaceRouter(logf logger.Logf, _ *device.Device, tunDev tun.Device) (
|
||||
}, nil
|
||||
}
|
||||
|
||||
func cmd(args ...string) *exec.Cmd {
|
||||
func cmd(args ...string) error {
|
||||
if len(args) == 0 {
|
||||
log.Fatalf("exec.Cmd(%#v) invalid; need argv[0]\n", args)
|
||||
return errors.New("cmd: no argv[0]")
|
||||
}
|
||||
return exec.Command(args[0], args[1:]...)
|
||||
|
||||
out, err := exec.Command(args[0], args[1:]...).CombinedOutput()
|
||||
if err != nil {
|
||||
return fmt.Errorf("running %q failed: %v\n%s", strings.Join(args, " "), err, out)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *linuxRouter) Up() error {
|
||||
out, err := cmd("ip", "link", "set", r.tunname, "up").CombinedOutput()
|
||||
if err != nil {
|
||||
// TODO: this should return an error; why is it calling log.Fatalf?
|
||||
// Audit callers to make sure they're handling errors.
|
||||
log.Fatalf("running ip link failed: %v\n%s", err, out)
|
||||
if err := cmd("ip", "link", "set", r.tunname, "up"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = r.ipt4.AppendUnique("filter", "FORWARD", r.forwardRule()...)
|
||||
if err != nil {
|
||||
r.logf("iptables forward failed: %v", err)
|
||||
if err := r.ipt4.AppendUnique("filter", "FORWARD", r.forwardRule()...); err != nil {
|
||||
return err
|
||||
}
|
||||
err = r.ipt4.AppendUnique("nat", "POSTROUTING", r.natRule()...)
|
||||
if err != nil {
|
||||
r.logf("iptables nat failed: %v", err)
|
||||
|
||||
if err := r.ipt4.AppendUnique("nat", "POSTROUTING", r.natRule()...); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -83,9 +85,8 @@ func (r *linuxRouter) SetRoutes(rs RouteSettings) error {
|
||||
addrdel := []string{"ip", "addr",
|
||||
"del", r.local.String(),
|
||||
"dev", r.tunname}
|
||||
out, err := cmd(addrdel...).CombinedOutput()
|
||||
if err != nil {
|
||||
r.logf("addr del failed: %v: %v\n%s", addrdel, err, out)
|
||||
if err := cmd(addrdel...); err != nil {
|
||||
r.logf("addr del failed: %v", err)
|
||||
if errq == nil {
|
||||
errq = err
|
||||
}
|
||||
@ -94,9 +95,8 @@ func (r *linuxRouter) SetRoutes(rs RouteSettings) error {
|
||||
addradd := []string{"ip", "addr",
|
||||
"add", rs.LocalAddr.String(),
|
||||
"dev", r.tunname}
|
||||
out, err := cmd(addradd...).CombinedOutput()
|
||||
if err != nil {
|
||||
r.logf("addr add failed: %v: %v\n%s", addradd, err, out)
|
||||
if err := cmd(addradd...); err != nil {
|
||||
r.logf("addr add failed: %v", err)
|
||||
if errq == nil {
|
||||
errq = err
|
||||
}
|
||||
@ -118,9 +118,8 @@ func (r *linuxRouter) SetRoutes(rs RouteSettings) error {
|
||||
"del", nstr,
|
||||
"via", r.local.IP.String(),
|
||||
"dev", r.tunname}
|
||||
out, err := cmd(addrdel...).CombinedOutput()
|
||||
if err != nil {
|
||||
r.logf("addr del failed: %v: %v\n%s", addrdel, err, out)
|
||||
if err := cmd(addrdel...); err != nil {
|
||||
r.logf("addr del failed: %v", err)
|
||||
if errq == nil {
|
||||
errq = err
|
||||
}
|
||||
@ -136,9 +135,8 @@ func (r *linuxRouter) SetRoutes(rs RouteSettings) error {
|
||||
"add", nstr,
|
||||
"via", rs.LocalAddr.IP.String(),
|
||||
"dev", r.tunname}
|
||||
out, err := cmd(addradd...).CombinedOutput()
|
||||
if err != nil {
|
||||
r.logf("addr add failed: %v: %v\n%s", addradd, err, out)
|
||||
if err := cmd(addradd...); err != nil {
|
||||
r.logf("addr add failed: %v", err)
|
||||
if errq == nil {
|
||||
errq = err
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user