wireguard: add metric to routes

maintainer: Felix Fietkau <nbd@nbd.name>

The metric field is not used when wireGuard routes are created.

See: https://github.com/openwrt/openwrt/issues/23199

This patch is aimed at adding the metric field in the config to the created routes for WireGuard if
the metric field is not empty and not 0

Compile tested: X86, Openwrt-main
Run tested: X86

Please have a look and consider implementing

Signed-off-by: Erik Conijn <egc112@msn.com>
Link: https://github.com/openwrt/openwrt/pull/23280
Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
Erik Conijn authored and Robert Marko committed 2026-07-01 19:09:09 +02:00
1 parent 85767ac8fe
commit 67ee9cf19d
1 file changed
+4
@@ -111,6 +111,8 @@ function proto_setup(proto) {
if (config.fwmark)
wg_config += sprintf('FwMark=%s\n', config.fwmark);
let metric = int(config.metric);
let ipv4_routes = [];
let ipv6_routes = [];
@@ -136,6 +138,8 @@ function proto_setup(proto) {
for (let allowed_ip in allowed_list) {
let addr_info = parse_address(allowed_ip);
let route = { target: addr_info.address, netmask: '' + addr_info.mask };
if (metric)
route.metric = metric;
if (addr_info.family == 6)
push(ipv6_routes, route);
else