This commit is contained in:
kabassanov 2026-05-16 09:52:26 +03:00 committed by GitHub
commit bd2c7663d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1824,14 +1824,21 @@ add_route_ipv6(struct route_ipv6 *r6, const struct tuntap *tt, unsigned int flag
* but for link-local destinations, we MUST specify the interface, so
* we build a combined "$gateway%$interface" gateway string
*/
if (r6->iface != NULL && gateway_needed
&& IN6_IS_ADDR_LINKLOCAL(&r6->gateway)) /* fe80::...%intf */
{
size_t len = strlen(gateway) + 1 + strlen(r6->iface) + 1;
char *tmp = gc_malloc(len, true, &gc);
snprintf(tmp, len, "%s%%%s", gateway, r6->iface);
gateway = tmp;
}
if (IN6_IS_ADDR_LINKLOCAL(&r6->gateway)) { /* fe80::...%intf */
if (r6->iface != NULL && gateway_needed) {
size_t len = strlen(gateway) + 1 + strlen(r6->iface)+1;
char *tmp = gc_malloc( len, true, &gc );
snprintf( tmp, len, "%s%%%s", gateway, r6->iface );
gateway = tmp;
} else if (device) {
size_t len = strlen(gateway) + 1 + strlen(device)+1;
char *tmp = gc_malloc( len, true, &gc );
snprintf( tmp, len, "%s%%%s", gateway, device );
gateway = tmp;
}
}
#endif
#ifndef _WIN32