)]}'
{"id":"openvpn~1946","triplet_id":"openvpn~master~I9085c55a7efefd31839b00ec8ec9a6f085574dde","project":"openvpn","branch":"master","full_branch":"refs/heads/master","attention_set":{"1000054":{"account":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"last_update":"2026-09-28 10:17:59.000000000","reason":"\u003cGERRIT_ACCOUNT_1000001\u003e replied on the change","reason_account":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."}},"1000053":{"account":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"last_update":"2026-09-25 02:40:20.000000000","reason":"Vote got outdated and was removed: Code-Review-1"},"1000003":{"account":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"last_update":"2026-09-28 07:41:03.000000000","reason":"Someone else replied on a comment you posted"},"1000001":{"account":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"last_update":"2026-09-29 00:05:14.000000000","reason":"Vote got outdated and was removed: Code-Review-1"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I9085c55a7efefd31839b00ec8ec9a6f085574dde","subject":"tests: add unit tests for route.c","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":6,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"9208e9e02639e160c5fea400f6b2167ee5de809a","_number":1946,"virtual_id_number":1946,"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":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},{"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"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."}],"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":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"}],"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"},{"updated":"2026-09-24 06:22:06.000000000","updated_by":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"real_updated_by":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"reviewer":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"state":"REVIEWER"},{"updated":"2026-09-28 10:17:59.000000000","updated_by":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"real_updated_by":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"reviewer":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"state":"REVIEWER"}],"messages":[{"id":"b3dfd93f69a4f2546bf601c66f8923ce6924737d","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":"94e6dcd3b9921803c76cf03bed82e923ef7c6913","author":{"_account_id":1000053,"name":"Răzvan Cojocaru","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"date":"2026-09-24 06:22:06.000000000","message":"Patch Set 1: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"593ebba2c743e92d64f27ca92148dc13636891f7","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.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":2},{"id":"3810fc69b9a0878d0633ebccbcddad4326eea096","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-25 02:40:55.000000000","message":"Patch Set 2:\n\nYou are right, thanks. The stubs in the driver only match the Linux code\npath in route.c, so it could never have linked on BSD. Restricted it to\nLinux in both Makefile.am and CMakeLists.txt, the same way test_networking\nis.\n\nThe three helper tests are platform independent and it would be nice to\nkeep them running everywhere. That would mean factoring those helpers out\nof route.c, along the lines of options_parse.c. Happy to look at that\nseparately if it is wanted.","accounts_in_message":[],"_revision_number":2},{"id":"0391f8d70069898849ce0e789119af3c8bbe157a","author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"date":"2026-09-25 09:43:31.000000000","message":"Patch Set 2: Code-Review-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"4512a291587e81bc7f0c0fa499f2a10661f08ff9","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.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":3},{"id":"b42aee7ecbf8d5b2577b32bfe973774d2e3a8995","author":{"_account_id":1000054,"name":"chugly","email":"charlie.vigue@openvpn.com","username":"chugly"},"date":"2026-09-28 07:41:03.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"19b74e82524a2eec7d3ec9f62560bb339c7eee6a","author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"date":"2026-09-28 10:17:59.000000000","message":"Patch Set 3: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":3},{"id":"9208e9e02639e160c5fea400f6b2167ee5de809a","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.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:NO_CHANGE OR changekind:TRIVIAL_REBASE OR is:MIN\")\n","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"f92779b63f0595e83a0ae158f2dfee5ec2653376","revisions":{"472d1fe901e0a0261fd0cf88801d08820cd201a6":{"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/46/1946/1","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1946/1","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/1 \u0026\u0026 git checkout -b change-1946 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/46/1946/1","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/1 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"360e3c1ad00e7b88371933e5196386af3e9fa74a","subject":"Reduce number of future epoch keys from 16 to 4"}],"author":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-23 12:23:34.000000000","tz":0},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-23 12:23:34.000000000","tz":0},"subject":"tests: add a unit test driver for route.c","message":"tests: add a unit test driver for route.c\n\nroute.c has no unit test coverage at all, so there is nowhere to put a\ntest when touching it.  Add a driver and cover the pure helpers it\nalready exports: the special address predicate, both netmask-to-netbits\nconversions, and the IPv6 prefix host-bit masking.\n\nThe two conversions disagree on a full-length netmask, where\nnetmask_to_netbits() reports -1 and netmask_to_netbits2() reports 32.\nThat is deliberate, callers use the -1 to tell a host route from a\nnetwork route, so pin it down rather than leave it to be \"fixed\" later.\n\nThe platform routing calls and the handful of socket helpers route.c\nreferences are stubbed in the test itself rather than linked in.  That\nkeeps the dependency list short, and it makes certain a test can never\nreach the real routing table.\n\nChange-Id: I9085c55a7efefd31839b00ec8ec9a6f085574dde\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"},"b5a04e7484242f1d3ac861ce929773c19fd58732":{"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/46/1946/2","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1946/2","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/2 \u0026\u0026 git checkout -b change-1946 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/46/1946/2","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/2 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"0cc99b10b4464bdeaa8c254f8388aeb241e8e8b6","subject":"GHA: Maintenance update September 2026"}],"author":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-23 12:23:34.000000000","tz":0},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-25 02:35:57.000000000","tz":0},"subject":"tests: add a unit test driver for route.c","message":"tests: add a unit test driver for route.c\n\nroute.c has no unit test coverage at all, so there is nowhere to put a\ntest when touching it.  Add a driver and cover the pure helpers it\nalready exports: the special address predicate, both netmask-to-netbits\nconversions, and the IPv6 prefix host-bit masking.\n\nThe two conversions disagree on a full-length netmask, where\nnetmask_to_netbits() reports -1 and netmask_to_netbits2() reports 32.\nThat is deliberate, callers use the -1 to tell a host route from a\nnetwork route, so pin it down rather than leave it to be \"fixed\" later.\n\nThe platform routing calls and the handful of socket helpers route.c\nreferences are stubbed in the test itself rather than linked in.  That\nkeeps the dependency list short, and it makes certain a test can never\nreach the real routing table.\n\nroute.c reaches the routing table through a different API on each\nplatform, so the stubs here only match the Linux one. Build the driver on\nLinux only, the same way test_networking already is.\n\nChange-Id: I9085c55a7efefd31839b00ec8ec9a6f085574dde\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"},"90dac0ff74b5023b593c7903d89f7c9210fbd403":{"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/46/1946/3","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1946/3","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/3 \u0026\u0026 git checkout -b change-1946 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/46/1946/3","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/3 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"0cc99b10b4464bdeaa8c254f8388aeb241e8e8b6","subject":"GHA: Maintenance update September 2026"}],"author":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-23 12:23:34.000000000","tz":0},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-28 06:19:53.000000000","tz":0},"subject":"tests: add unit tests for route.c","message":"tests: add unit tests for route.c\n\nroute.c has no unit test coverage at all, so there is nowhere to put a\ntest when touching it.  Cover the pure helpers it already exports: the\nspecial address predicate, both netmask-to-netbits conversions, and the\nIPv6 prefix host-bit masking.\n\nThe two conversions disagree on a full-length netmask, where\nnetmask_to_netbits() reports -1 and netmask_to_netbits2() reports 32.\nThat is deliberate, callers use the -1 to tell a host route from a\nnetwork route, so pin it down rather than leave it to be \"fixed\" later.\n\nRather than add a driver of its own, the tests are hosted by\nnetworking_testdriver as case 9, in the way test_misc hosts\ntest_schedule.  That driver is already gated on HAVE_SITNL, which is\nwhat route.c needs: it reaches the routing table through net_route_* on\nLinux and through argv/execve elsewhere, so one set of stubs cannot\nlink on both.  t_net.sh runs the cases above LAST_AUTO_TEST after it has\nremoved its dummy interface, so the route tests need no interface and no\nparticular network state.\n\nroute.c links against the real networking_sitnl.c that the driver\nalready carries.  Only the socket and argv helpers that route.c\nreferences but no test here reaches are stubbed, and those assert rather\nthan return quietly, so a test straying onto one fails loudly.\n\nChange-Id: I9085c55a7efefd31839b00ec8ec9a6f085574dde\nSigned-off-by: Charlie Vigue \u003ccharlie.vigue@openvpn.com\u003e\n"},"branch":"refs/heads/master"},"f92779b63f0595e83a0ae158f2dfee5ec2653376":{"kind":"REWORK","_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/46/1946/4","fetch":{"anonymous http":{"url":"https://gerrit.openvpn.net/openvpn","ref":"refs/changes/46/1946/4","commands":{"Branch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/4 \u0026\u0026 git checkout -b change-1946 FETCH_HEAD","Checkout":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://gerrit.openvpn.net/openvpn refs/changes/46/1946/4","Reset To":"git fetch https://gerrit.openvpn.net/openvpn refs/changes/46/1946/4 \u0026\u0026 git reset --hard FETCH_HEAD"}}},"commit":{"parents":[{"commit":"0cc99b10b4464bdeaa8c254f8388aeb241e8e8b6","subject":"GHA: Maintenance update September 2026"}],"author":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-23 12:23:34.000000000","tz":0},"committer":{"name":"Charlie Vigue","email":"charlie.vigue@openvpn.com","date":"2026-09-29 00:04:31.000000000","tz":0},"subject":"tests: add unit tests for route.c","message":"tests: add unit tests for route.c\n\nroute.c has no unit test coverage at all, so there is nowhere to put a\ntest when touching it.  Cover the pure helpers it already exports: the\nspecial address predicate, both netmask-to-netbits conversions, and the\nIPv6 prefix host-bit masking.\n\nThe two conversions disagree on a full-length netmask, where\nnetmask_to_netbits() reports -1 and netmask_to_netbits2() reports 32.\nThat is deliberate, callers use the -1 to tell a host route from a\nnetwork route, so pin it down rather than leave it to be \"fixed\" later.\n\nRather than add a driver of its own, the tests are hosted by\nnetworking_testdriver as case 9, in the way test_misc hosts\ntest_schedule.  That driver is already gated on HAVE_SITNL, which is\nwhat route.c needs: it reaches the routing table through net_route_* on\nLinux and through argv/execve elsewhere, so one set of stubs cannot\nlink on both.  t_net.sh runs the cases above LAST_AUTO_TEST after it has\nremoved its dummy interface, so the route tests need no interface and no\nparticular network state.\n\nroute.c links against the real networking_sitnl.c that the driver\nalready carries.  Only the socket and argv helpers that route.c\nreferences but no test here reaches are stubbed, and those assert rather\nthan return quietly, so a test straying onto one fails loudly.\n\nChange-Id: I9085c55a7efefd31839b00ec8ec9a6f085574dde\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"}]}
