)]}'
{"id":"openvpn~1947","triplet_id":"openvpn~master~I9e45c0edbd2cb237f27e349f2f9d7d9b8d826690","project":"openvpn","branch":"master","full_branch":"refs/heads/master","attention_set":{"1000003":{"account":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"last_update":"2026-09-24 01:10:16.000000000","reason":"Reviewer was added"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I9e45c0edbd2cb237f27e349f2f9d7d9b8d826690","subject":"route: implement net_gateway_ipv6 for --route-ipv6","status":"NEW","created":"2026-09-24 01:10:15.000000000","updated":"2026-09-29 00:05:14.000000000","submit_type":"CHERRY_PICK","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"46ca9da3001f950a65bab4bb5c108886ef67e238","_number":1947,"virtual_id_number":1947,"owner":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"actions":{},"labels":{"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"}],"values":{"-2":"This shall not be submitted","-1":"I would prefer this is not submitted as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"}],"CC":[{"_account_id":1000026,"name":"openvpn-devel","email":"openvpn-devel@lists.sourceforge.net","username":"openvpn-devel"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-24 01:10:16.000000000","updated_by":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"real_updated_by":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"reviewer":{"_account_id":1000026,"name":"openvpn-devel","email":"openvpn-devel@lists.sourceforge.net","username":"openvpn-devel"},"state":"CC"},{"updated":"2026-09-24 01:10:16.000000000","updated_by":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"real_updated_by":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"reviewer":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"state":"REVIEWER"}],"messages":[{"id":"88f9dbc460f0fd2efd96c6a8b2fc3d81b81c62bf","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-24 01:10:15.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"428865f5fd376ac7ca91ff4bfb62b6987c7ef71c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-25 02:40:20.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"ffdb91eb1c7b7391339a23f771b72aac0af928e3","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-25 02:40:59.000000000","message":"Patch Set 2:\n\nFolded the man page change from I04974ac in here, and documented that the\ngateway parameter also accepts \"default\".","accounts_in_message":[],"_revision_number":2},{"id":"7f75cf8dc4e262420643af55a463e2c8197944f6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-28 06:43:57.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"46ca9da3001f950a65bab4bb5c108886ef67e238","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-29 00:05:14.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"0d03f47e57358df3ca4b11027232cd47d10ea980","revisions":{"a3cbadf262ff60a37a073fc3ae0c50fb9cc7b509":{"kind":"REWORK","_number":1,"created":"2026-09-24 01:10:15.000000000","uploader":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"ref":"refs/changes/47/1947/1","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/47/1947/1","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/1 \u0026\u0026 git checkout -b change-1947 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/47/1947/1","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"472d1fe901e0a0261fd0cf88801d08820cd201a6","subject":"tests: add a unit test driver for route.c"}],"author":{"name":"François Kooman","email":"fkooman@tuxed.net","date":"2021-11-23 08:37:58.000000000","tz":60},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-23 12:24:47.000000000","tz":0},"subject":"route: implement net_gateway_ipv6 for --route-ipv6","message":"route: implement net_gateway_ipv6 for --route-ipv6\n\n--route has been able to name the system default gateway symbolically for\na long time: get_special_addr() resolves net_gateway, vpn_gateway and\nremote_host.  --route-ipv6 never gained the equivalent, so the usual IPv4\nidiom for keeping specific traffic off the tunnel has no IPv6 counterpart.\n\nThe failure is silent and points the wrong way.  init_route_ipv6() hands\nthe gateway parameter straight to inet_pton(), which rejects\n\"net_gateway_ipv6\" with a warning and leaves the gateway unset.\nadd_route_ipv6() then falls back to device \u003d tt-\u003eactual_name, so a route\nmeant to bypass the tunnel is installed through it instead -- the exact\nopposite of what was asked for.\n\nResolve the name from rl6-\u003engi6, which init_route_ipv6_list() already\nfills with the system default gateway and exports to scripts under this\nvery name, and pin the route to that gateway\u0027s interface so it leaves the\nhost the same way the corresponding IPv4 route does.  Note this is ngi6\nand not rgi6: the latter is the route towards the VPN server, which only\ncoincides with the default gateway on a singly-homed host.  An on-link\ngateway is not a next hop, so only the interface is set in that case.\n\nCover the three outcomes in route_testdriver: a resolved gateway, one\nthe system could not supply, and an on-link gateway where only the\ninterface is wanted.\n\nThis revives the patch originally submitted in 2021 for Trac #1161.\n\nGithub: OpenVPN/openvpn#1015\nChange-Id: I9e45c0edbd2cb237f27e349f2f9d7d9b8d826690\nSigned-off-by: François Kooman \u003cfkooman@tuxed.net\u003e\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"},"e2f21c35ece9c04cec0d9a6651696768eb0616db":{"kind":"REWORK","_number":2,"created":"2026-09-25 02:40:20.000000000","uploader":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"ref":"refs/changes/47/1947/2","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/47/1947/2","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/2 \u0026\u0026 git checkout -b change-1947 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/47/1947/2","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"b5a04e7484242f1d3ac861ce929773c19fd58732","subject":"tests: add a unit test driver for route.c"}],"author":{"name":"François Kooman","email":"fkooman@tuxed.net","date":"2021-11-23 08:37:58.000000000","tz":60},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-25 02:36:37.000000000","tz":0},"subject":"route: implement net_gateway_ipv6 for --route-ipv6","message":"route: implement net_gateway_ipv6 for --route-ipv6\n\n--route has been able to name the system default gateway symbolically for\na long time: get_special_addr() resolves net_gateway, vpn_gateway and\nremote_host.  --route-ipv6 never gained the equivalent, so the usual IPv4\nidiom for keeping specific traffic off the tunnel has no IPv6 counterpart.\n\nThe failure is silent and points the wrong way.  init_route_ipv6() hands\nthe gateway parameter straight to inet_pton(), which rejects\n\"net_gateway_ipv6\" with a warning and leaves the gateway unset.\nadd_route_ipv6() then falls back to device \u003d tt-\u003eactual_name, so a route\nmeant to bypass the tunnel is installed through it instead -- the exact\nopposite of what was asked for.\n\nResolve the name from rl6-\u003engi6, which init_route_ipv6_list() already\nfills with the system default gateway and exports to scripts under this\nvery name, and pin the route to that gateway\u0027s interface so it leaves the\nhost the same way the corresponding IPv4 route does.  Note this is ngi6\nand not rgi6: the latter is the route towards the VPN server, which only\ncoincides with the default gateway on a singly-homed host.  An on-link\ngateway is not a next hop, so only the interface is set in that case.\n\nCover the three outcomes in route_testdriver: a resolved gateway, one\nthe system could not supply, and an on-link gateway where only the\ninterface is wanted.\n\nDocument the keyword under --route-ipv6. While there, note that the\ngateway parameter also accepts \"default\", which means the same as\nleaving it out.\n\nThis revives the patch originally submitted in 2021 for Trac #1161.\n\nGithub: OpenVPN/openvpn#1015\nChange-Id: I9e45c0edbd2cb237f27e349f2f9d7d9b8d826690\nSigned-off-by: François Kooman \u003cfkooman@tuxed.net\u003e\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"},"41618089630cefda590a5019ebe5597439128439":{"kind":"REWORK","_number":3,"created":"2026-09-28 06:43:57.000000000","uploader":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"ref":"refs/changes/47/1947/3","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/47/1947/3","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/3 \u0026\u0026 git checkout -b change-1947 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/47/1947/3","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"90dac0ff74b5023b593c7903d89f7c9210fbd403","subject":"tests: add unit tests for route.c"}],"author":{"name":"François Kooman","email":"fkooman@tuxed.net","date":"2021-11-23 08:37:58.000000000","tz":60},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-28 06:20:04.000000000","tz":0},"subject":"route: implement net_gateway_ipv6 for --route-ipv6","message":"route: implement net_gateway_ipv6 for --route-ipv6\n\n--route has been able to name the system default gateway symbolically for\na long time: get_special_addr() resolves net_gateway, vpn_gateway and\nremote_host.  --route-ipv6 never gained the equivalent, so the usual IPv4\nidiom for keeping specific traffic off the tunnel has no IPv6 counterpart.\n\nThe failure is silent and points the wrong way.  init_route_ipv6() hands\nthe gateway parameter straight to inet_pton(), which rejects\n\"net_gateway_ipv6\" with a warning and leaves the gateway unset.\nadd_route_ipv6() then falls back to device \u003d tt-\u003eactual_name, so a route\nmeant to bypass the tunnel is installed through it instead -- the exact\nopposite of what was asked for.\n\nResolve the name from rl6-\u003engi6, which init_route_ipv6_list() already\nfills with the system default gateway and exports to scripts under this\nvery name, and pin the route to that gateway\u0027s interface so it leaves the\nhost the same way the corresponding IPv4 route does.  Note this is ngi6\nand not rgi6: the latter is the route towards the VPN server, which only\ncoincides with the default gateway on a singly-homed host.  An on-link\ngateway is not a next hop, so only the interface is set in that case.\n\nCover the three outcomes in route_testdriver: a resolved gateway, one\nthe system could not supply, and an on-link gateway where only the\ninterface is wanted.\n\nDocument the keyword under --route-ipv6. While there, note that the\ngateway parameter also accepts \"default\", which means the same as\nleaving it out.\n\nThis revives the patch originally submitted in 2021 for Trac #1161.\n\nGithub: OpenVPN/openvpn#1015\nChange-Id: I9e45c0edbd2cb237f27e349f2f9d7d9b8d826690\nSigned-off-by: François Kooman \u003cfkooman@tuxed.net\u003e\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"},"0d03f47e57358df3ca4b11027232cd47d10ea980":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2026-09-29 00:05:14.000000000","uploader":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"ref":"refs/changes/47/1947/4","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/47/1947/4","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/4 \u0026\u0026 git checkout -b change-1947 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/47/1947/4","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/47/1947/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"f92779b63f0595e83a0ae158f2dfee5ec2653376","subject":"tests: add unit tests for route.c"}],"author":{"name":"François Kooman","email":"fkooman@tuxed.net","date":"2021-11-23 08:37:58.000000000","tz":60},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-29 00:04:31.000000000","tz":0},"subject":"route: implement net_gateway_ipv6 for --route-ipv6","message":"route: implement net_gateway_ipv6 for --route-ipv6\n\n--route has been able to name the system default gateway symbolically for\na long time: get_special_addr() resolves net_gateway, vpn_gateway and\nremote_host.  --route-ipv6 never gained the equivalent, so the usual IPv4\nidiom for keeping specific traffic off the tunnel has no IPv6 counterpart.\n\nThe failure is silent and points the wrong way.  init_route_ipv6() hands\nthe gateway parameter straight to inet_pton(), which rejects\n\"net_gateway_ipv6\" with a warning and leaves the gateway unset.\nadd_route_ipv6() then falls back to device \u003d tt-\u003eactual_name, so a route\nmeant to bypass the tunnel is installed through it instead -- the exact\nopposite of what was asked for.\n\nResolve the name from rl6-\u003engi6, which init_route_ipv6_list() already\nfills with the system default gateway and exports to scripts under this\nvery name, and pin the route to that gateway\u0027s interface so it leaves the\nhost the same way the corresponding IPv4 route does.  Note this is ngi6\nand not rgi6: the latter is the route towards the VPN server, which only\ncoincides with the default gateway on a singly-homed host.  An on-link\ngateway is not a next hop, so only the interface is set in that case.\n\nCover the three outcomes in route_testdriver: a resolved gateway, one\nthe system could not supply, and an on-link gateway where only the\ninterface is wanted.\n\nDocument the keyword under --route-ipv6. While there, note that the\ngateway parameter also accepts \"default\", which means the same as\nleaving it out.\n\nThis revives the patch originally submitted in 2021 for Trac #1161.\n\nGithub: OpenVPN/openvpn#1015\nChange-Id: I9e45c0edbd2cb237f27e349f2f9d7d9b8d826690\nSigned-off-by: François Kooman \u003cfkooman@tuxed.net\u003e\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"NOT_READY","labels":[{"label":"Code-Review","status":"NEED"}]},{"rule_name":"checks~ChecksSubmitRule","status":"OK"}]}
