2 desc "Virtual Private Network (VPN) tool"
3 homepage "https://www.tinc-vpn.org/"
4 url "https://tinc-vpn.org/packages/tinc-1.0.36.tar.gz"
5 sha256 "40f73bb3facc480effe0e771442a706ff0488edea7a5f2505d4ccb2aa8163108"
6 license "GPL-2.0-or-later" => { with: "openvpn-openssl-exception" }
9 url "https://www.tinc-vpn.org/download/"
10 regex(/href=.*?tinc[._-]v?(\d+(?:\.\d+)+)\.t/i)
15 sha256 cellar: :any, arm64_sequoia: "d452247fec1d29690250c77dafdeb7cac2c945ddef7f11e19fa728563cf4f720"
16 sha256 cellar: :any, arm64_sonoma: "ab60d88c2bb9f1d867bc7fad3ff18086c3bb907502cc1f9af3c61eab5c633771"
17 sha256 cellar: :any, arm64_ventura: "9f2467372c458402453d111b49be9ebdfb5d7e53f1a3a33d32bf2c43e9cd6b1b"
18 sha256 cellar: :any, arm64_monterey: "4fb0f6f2276a92f60c5aad1674c137850d6e0a6ac77adc8ce575aa4288a8b942"
19 sha256 cellar: :any, arm64_big_sur: "88d77dd06ee97bf7c1cc0e330876c992d7d460cc55e8e62ebb5c03a0f4ebb0e2"
20 sha256 cellar: :any, sonoma: "dfbaa4b890c987e2daeb4a38a4a82d8008ad23e38b135768909c9eeda980c2ff"
21 sha256 cellar: :any, ventura: "3f2730126370c8ded288e13b4756426213aef4082039f8a7b64776214ce70db6"
22 sha256 cellar: :any, monterey: "58d69be546dceda9a4d413770531633c132cf46a5901553f3d0367cd0bae282f"
23 sha256 cellar: :any, big_sur: "094208fa2043d75696fa60b47a4d26f32e67fbffcce78cc37429a6eac641ddb8"
24 sha256 cellar: :any, catalina: "878a5d0ded29f6b9ad6a18e040508e7597551d4b359c39f9ecaaa7fc6cb91b12"
25 sha256 cellar: :any_skip_relocation, x86_64_linux: "f1cf23e958fe70fd7662d67e87ab9adfd4d838550b104216ec70363391ec7595"
29 depends_on "openssl@3"
31 uses_from_macos "zlib"
33 # fix build errors, upstream pr ref, https://github.com/gsliepen/tinc/pull/464
37 system "./configure", "--prefix=#{prefix}", "--sysconfdir=#{etc}",
38 "--with-openssl=#{Formula["openssl@3"].opt_prefix}"
39 system "make", "install"
43 (var/"run/tinc").mkpath
47 run [opt_sbin/"tincd", "--config=#{etc}/tinc", "--pidfile=#{var}/run/tinc/tinc.pid", "-D"]
50 working_dir etc/"tinc"
51 log_path var/"log/tinc/stdout.log"
52 error_log_path var/"log/tinc/stderr.log"
56 assert_match version.to_s, shell_output("#{sbin}/tincd --version")
61 diff --git a/src/net_socket.c b/src/net_socket.c
62 index 6195c16..e072970 100644
63 --- a/src/net_socket.c
64 +++ b/src/net_socket.c
65 @@ -102,14 +102,14 @@ static bool bind_to_interface(int sd) {
67 #if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE)
68 memset(&ifr, 0, sizeof(ifr));
69 - strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ);
70 - ifr.ifr_ifrn.ifrn_name[IFNAMSIZ - 1] = 0;
71 + strncpy(ifr.ifr_name, iface, IFNAMSIZ);
72 + ifr.ifr_name[IFNAMSIZ - 1] = 0;
75 status = setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr));
78 - logger(LOG_ERR, "Can't bind to interface %s: %s", ifr.ifr_ifrn.ifrn_name, strerror(errno));
79 + logger(LOG_ERR, "Can't bind to interface %s: %s", ifr.ifr_name, strerror(errno));
83 @@ -157,13 +157,13 @@ int setup_listen_socket(const sockaddr_t *sa) {
86 memset(&ifr, 0, sizeof(ifr));
87 - strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ);
88 - ifr.ifr_ifrn.ifrn_name[IFNAMSIZ - 1] = 0;
89 + strncpy(ifr.ifr_name, iface, IFNAMSIZ);
90 + ifr.ifr_name[IFNAMSIZ - 1] = 0;
93 if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr))) {
95 - logger(LOG_ERR, "Can't bind to interface %s: %s", ifr.ifr_ifrn.ifrn_name, strerror(sockerrno));
96 + logger(LOG_ERR, "Can't bind to interface %s: %s", ifr.ifr_name, strerror(sockerrno));
100 diff --git a/src/raw_socket_device.c b/src/raw_socket_device.c
101 index f4ed694..cf13fe9 100644
102 --- a/src/raw_socket_device.c
103 +++ b/src/raw_socket_device.c
104 @@ -61,12 +61,12 @@ static bool setup_device(void) {
107 memset(&ifr, 0, sizeof(ifr));
108 - strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ);
109 - ifr.ifr_ifrn.ifrn_name[IFNAMSIZ - 1] = 0;
110 + strncpy(ifr.ifr_name, iface, IFNAMSIZ);
111 + ifr.ifr_name[IFNAMSIZ - 1] = 0;
113 if(ioctl(device_fd, SIOCGIFINDEX, &ifr)) {
115 - logger(LOG_ERR, "Can't find interface %s: %s", ifr.ifr_ifrn.ifrn_name, strerror(errno));
116 + logger(LOG_ERR, "Can't find interface %s: %s", ifr.ifr_name, strerror(errno));
120 @@ -76,7 +76,7 @@ static bool setup_device(void) {
121 sa.sll_ifindex = ifr.ifr_ifindex;
123 if(bind(device_fd, (struct sockaddr *) &sa, (socklen_t) sizeof(sa))) {
124 - logger(LOG_ERR, "Could not bind %s to %s: %s", device, ifr.ifr_ifrn.ifrn_name, strerror(errno));
125 + logger(LOG_ERR, "Could not bind %s to %s: %s", device, ifr.ifr_name, strerror(errno));