include $(TOPDIR)/rules.mk
PKG_NAME:=tailscale
-PKG_VERSION:=1.44.0
+PKG_VERSION:=1.48.0
PKG_RELEASE:=1
-PKG_SOURCE:=tailscale-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/tailscale/tailscale/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=dc230cf3ac290140e573268a6e8f17124752ef064c8d3a86765a9dbb6f1bd354
+PKG_HASH:=a58f9a42d2d6c0eb0517f5e11f4b7f19892d999c8969c2ca148e4222089c85fc
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec1@gmail.com>
PKG_LICENSE:=BSD-3-Clause
define Package/tailscaled/conffiles
/etc/config/tailscale
-/etc/tailscale/tailscaled.state
-endef
-
-GO_IPTABLES_VERSION:=0.6.0
-GO_IPTABLES_FILE:=$(PKG_NAME)-go-iptables-$(GO_IPTABLES_VERSION).tar.gz
-
-define Download/go-iptables
- URL:=https://codeload.github.com/coreos/go-iptables/tar.gz/v$(GO_IPTABLES_VERSION)?
- URL_FILE:=$(GO_IPTABLES_FILE)
- FILE:=$(GO_IPTABLES_FILE)
- HASH:=a784cc17fcb17879f073eae47bc4c2e899f59f6906dac5a0aa7a9cc9f95ea66d
-endef
-
-define Build/Prepare
- $(PKG_UNPACK)
- [ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR)
- $(eval $(call Download,go-iptables))
- ( \
- mkdir -p $(PKG_BUILD_DIR)/patched/ ; \
- gzip -dc $(DL_DIR)/$(GO_IPTABLES_FILE) | $(HOST_TAR) -C $(PKG_BUILD_DIR)/patched $(TAR_OPTIONS) ; \
- mv $(PKG_BUILD_DIR)/patched/go-iptables-$(GO_IPTABLES_VERSION) $(PKG_BUILD_DIR)/patched/go-iptables ; \
- )
- $(Build/Patch)
+/etc/tailscale/
endef
define Package/tailscale/install
+++ /dev/null
---- a/go.mod
-+++ b/go.mod
-@@ -2,6 +2,8 @@ module tailscale.com
-
- go 1.20
-
-+replace github.com/coreos/go-iptables => ./patched/go-iptables
-+
- require (
- filippo.io/mkcert v1.4.4
- github.com/Microsoft/go-winio v0.6.1
---- a/patched/go-iptables/iptables/iptables.go
-+++ b/patched/go-iptables/iptables/iptables.go
-@@ -149,12 +149,39 @@ func New(opts ...option) (*IPTables, err
- return ipt, nil
- }
-
-+func NewFake(opts ...option) (*IPTables, error) {
-+
-+ ipt := &IPTables{
-+ path: "/bin/false",
-+ proto: ProtocolIPv4,
-+ hasCheck: false,
-+ hasWait: false,
-+ waitSupportSecond: false,
-+ hasRandomFully: false,
-+ v1: 0,
-+ v2: 0,
-+ v3: 0,
-+ mode: "legacy",
-+ timeout: 0,
-+ }
-+
-+ for _, opt := range opts {
-+ opt(ipt)
-+ }
-+
-+ return ipt, nil
-+}
-+
- // New creates a new IPTables for the given proto.
- // The proto will determine which command is used, either "iptables" or "ip6tables".
- func NewWithProtocol(proto Protocol) (*IPTables, error) {
- return New(IPFamily(proto), Timeout(0))
- }
-
-+func NewFakeWithProtocol(proto Protocol) (*IPTables, error) {
-+ return NewFake(IPFamily(proto), Timeout(0))
-+}
-+
- // Proto returns the protocol used by this IPTables.
- func (ipt *IPTables) Proto() Protocol {
- return ipt.proto
+++ /dev/null
---- a/wgengine/router/router_linux.go
-+++ b/wgengine/router/router_linux.go
-@@ -129,7 +129,7 @@ func newUserspaceRouter(logf logger.Logf
-
- ipt4, err := iptables.NewWithProtocol(iptables.ProtocolIPv4)
- if err != nil {
-- return nil, err
-+ ipt4, err = iptables.NewFakeWithProtocol(iptables.ProtocolIPv4)
- }
-
- v6err := checkIPv6(logf)
-@@ -148,7 +148,7 @@ func newUserspaceRouter(logf logger.Logf
- // if unavailable. We want that to be a non-fatal error.
- ipt6, err = iptables.NewWithProtocol(iptables.ProtocolIPv6)
- if err != nil {
-- return nil, err
-+ ipt6, err = iptables.NewFakeWithProtocol(iptables.ProtocolIPv6)
- }
- }
-
-@@ -1676,11 +1676,6 @@ func checkIPv6(logf logger.Logf) error {
- return fmt.Errorf("kernel doesn't support IPv6 policy routing: %w", err)
- }
-
-- // Some distros ship ip6tables separately from iptables.
-- if _, err := exec.LookPath("ip6tables"); err != nil {
-- return err
-- }
--
- return nil
- }
-
+++ /dev/null
---- a/cmd/tailscale/cli/up.go
-+++ b/cmd/tailscale/cli/up.go
-@@ -147,7 +147,7 @@ func defaultNetfilterMode() string {
- if distro.Get() == distro.Synology {
- return "off"
- }
-- return "on"
-+ return "off"
- }
-
- type upArgsT struct {