Updated dependencies
This commit is contained in:
@@ -1,23 +1,24 @@
|
||||
package routing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func (r *routing) AddRoutesVia(subnets []net.IPNet, defaultGateway net.IP, defaultInterface string) error {
|
||||
func (r *routing) AddRoutesVia(ctx context.Context, subnets []net.IPNet, defaultGateway net.IP, defaultInterface string) error {
|
||||
for _, subnet := range subnets {
|
||||
exists, err := r.routeExists(subnet)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if exists { // thanks to @npawelek https://github.com/npawelek
|
||||
if err := r.removeRoute(subnet); err != nil {
|
||||
if err := r.removeRoute(ctx, subnet); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
r.logger.Info("adding %s as route via %s", subnet.String(), defaultInterface)
|
||||
output, err := r.commander.Run("ip", "route", "add", subnet.String(), "via", defaultGateway.String(), "dev", defaultInterface)
|
||||
output, err := r.commander.Run(ctx, "ip", "route", "add", subnet.String(), "via", defaultGateway.String(), "dev", defaultInterface)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot add route for %s via %s %s %s: %s: %w", subnet.String(), defaultGateway.String(), "dev", defaultInterface, output, err)
|
||||
}
|
||||
@@ -25,8 +26,8 @@ func (r *routing) AddRoutesVia(subnets []net.IPNet, defaultGateway net.IP, defau
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *routing) removeRoute(subnet net.IPNet) (err error) {
|
||||
output, err := r.commander.Run("ip", "route", "del", subnet.String())
|
||||
func (r *routing) removeRoute(ctx context.Context, subnet net.IPNet) (err error) {
|
||||
output, err := r.commander.Run(ctx, "ip", "route", "del", subnet.String())
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot delete route for %s: %s: %w", subnet.String(), output, err)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package routing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"testing"
|
||||
@@ -51,10 +52,10 @@ func Test_removeRoute(t *testing.T) {
|
||||
defer mockCtrl.Finish()
|
||||
commander := mock_command.NewMockCommander(mockCtrl)
|
||||
|
||||
commander.EXPECT().Run("ip", "route", "del", tc.subnet.String()).
|
||||
commander.EXPECT().Run(context.Background(), "ip", "route", "del", tc.subnet.String()).
|
||||
Return(tc.runOutput, tc.runErr).Times(1)
|
||||
r := &routing{commander: commander}
|
||||
err := r.removeRoute(tc.subnet)
|
||||
err := r.removeRoute(context.Background(), tc.subnet)
|
||||
if tc.err != nil {
|
||||
require.Error(t, err)
|
||||
assert.Equal(t, tc.err.Error(), err.Error())
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package routing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
|
||||
"github.com/qdm12/golibs/command"
|
||||
@@ -9,7 +10,7 @@ import (
|
||||
)
|
||||
|
||||
type Routing interface {
|
||||
AddRoutesVia(subnets []net.IPNet, defaultGateway net.IP, defaultInterface string) error
|
||||
AddRoutesVia(ctx context.Context, subnets []net.IPNet, defaultGateway net.IP, defaultInterface string) error
|
||||
DefaultRoute() (defaultInterface string, defaultGateway net.IP, defaultSubnet net.IPNet, err error)
|
||||
CurrentPublicIP(defaultInterface string) (ip net.IP, err error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user