)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"39b7a5b8_a1e8da52","updated":"2025-10-13 15:01:15.000000000","message":"I am seriously confused by this PR. The premise of the PR seems that routes that are setup on the startup of OpenVPN (CM_TOP) need to be handled differrent than routes on the startup of a client or routes that are added later, e.g. by CCD files but I do not see a strong reason why these initial routes should be special in that regard.","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"}],"src/openvpn/route.c":[{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":true,"context_lines":[{"line_number":1808,"context_line":"                    gateway,"},{"line_number":1809,"context_line":"                    netmask);"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    /* FIXME -- add on-link support for Dragonfly */"},{"line_number":1812,"context_line":""},{"line_number":1813,"context_line":"    argv_msg(D_ROUTE, \u0026argv);"},{"line_number":1814,"context_line":"    bool ret \u003d openvpn_execve_check(\u0026argv, es, 0,"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"d77240b0_a0c41a4e","side":"PARENT","line":1811,"updated":"2025-10-13 15:01:15.000000000","message":"Has this been really tested on DragonFly BSD?","commit_id":"8d7f501d1b45820f4a77c49a5ee082ee0a3f1bb4"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"94ac3cf1d06dfa9a8f59f1a8c87efea1c9849242","unresolved":true,"context_lines":[{"line_number":1808,"context_line":"                    gateway,"},{"line_number":1809,"context_line":"                    netmask);"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    /* FIXME -- add on-link support for Dragonfly */"},{"line_number":1812,"context_line":""},{"line_number":1813,"context_line":"    argv_msg(D_ROUTE, \u0026argv);"},{"line_number":1814,"context_line":"    bool ret \u003d openvpn_execve_check(\u0026argv, es, 0,"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"aaa6380b_66ab5947","side":"PARENT","line":1811,"in_reply_to":"d77240b0_a0c41a4e","updated":"2025-10-21 14:10:18.000000000","message":"i tested on the first patch but i tested again the #12 on 6.4.2 and found also a bug with the ifconfig, i fixed just moving from #if defined(TARGET_FREEBSD) || defined (TARGET_DRAGONFLY) code to #if defined(TARGET_NETBSD) || defined (TARGET_DRAGONFLY) code in do_ifconfig_ipv4(). Here the logs:\n\nmaster:\n2025-10-20 13:36:42 PUSH: Received control message: \u0027PUSH_REPLY,route-gateway 10.23.100.1,topology subnet,ping 5,ping-restart 30,ifconfig 10.23.100.2 255.255.255.0,peer-id 0,cipher AES-256-GCM,protocol-flags cc-exit tls-ekm dyn-tls-crypt,tun-mtu 1500\u0027\n2025-10-20 13:36:42 OPTIONS IMPORT: --ifconfig/up options modified\n2025-10-20 13:36:42 OPTIONS IMPORT: route-related options modified\n2025-10-20 13:36:42 OPTIONS IMPORT: tun-mtu set to 1500\n2025-10-20 13:36:42 TUN/TAP device tun0 exists previously, keep at program end\n2025-10-20 13:36:42 TUN/TAP device /dev/tun0 opened\n2025-10-20 13:36:42 tun/tap device [tun0] opened\n\n2025-10-20 13:36:42 /sbin/ifconfig tun0 10.23.100.2/24 mtu 1500 up\nifconfig: ioctl (SIOCAIFADDR): Destination address required\n2025-10-20 13:36:42 FreeBSD ifconfig failed: external program exited with error status: 1\n2025-10-20 13:36:42 Exiting due to fatal error\n\n\npatchset #12:\n2025-10-20 13:43:42 PUSH: Received control message: \u0027PUSH_REPLY,route-gateway 10.23.100.1,topology subnet,ping 5,ping-restart 30,ifconfig 10.23.100.2 255.255.255.0,peer-id 0,cipher AES-256-GCM,protocol-flags cc-exit tls-ekm dyn-tls-crypt,tun-mtu 1500\u0027\n2025-10-20 13:43:42 OPTIONS IMPORT: --ifconfig/up options modified\n2025-10-20 13:43:42 OPTIONS IMPORT: route-related options modified\n2025-10-20 13:43:42 OPTIONS IMPORT: tun-mtu set to 1500\n2025-10-20 13:43:42 TUN/TAP device tun0 exists previously, keep at program end\n2025-10-20 13:43:42 TUN/TAP device /dev/tun0 opened\n2025-10-20 13:43:42 tun/tap device [tun0] opened\n\n2025-10-20 13:43:42 /sbin/ifconfig tun0 10.23.100.2 10.23.100.1 mtu 1500 netmask 255.255.255.0 up\n2025-10-20 13:43:42 /sbin/route add -net 10.23.100.0 -iface tun0\nadd net 10.23.100.0: gateway tun0\n\n2025-10-20 13:43:42 Initialization Sequence Completed\n\n\nIf you have any thought about it or something to suggest (or some particular test) please feel free to share","commit_id":"8d7f501d1b45820f4a77c49a5ee082ee0a3f1bb4"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":true,"context_lines":[{"line_number":1597,"context_line":"#endif"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    if (tt-\u003etype \u003d\u003d DEV_TYPE_TAP"},{"line_number":1600,"context_line":"        \u0026\u0026 !( (r4-\u003eflags \u0026 RT_METRIC_DEFINED) \u0026\u0026 r4-\u003emetric \u003d\u003d 0 ) )"},{"line_number":1601,"context_line":"    {"},{"line_number":1602,"context_line":"        return true;"},{"line_number":1603,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"f8856fdf_5f40d6a4","line":1600,"updated":"2025-10-13 15:01:15.000000000","message":"how does the metric play into needing a gateway or not?","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"94ac3cf1d06dfa9a8f59f1a8c87efea1c9849242","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"#endif"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    if (tt-\u003etype \u003d\u003d DEV_TYPE_TAP"},{"line_number":1600,"context_line":"        \u0026\u0026 !( (r4-\u003eflags \u0026 RT_METRIC_DEFINED) \u0026\u0026 r4-\u003emetric \u003d\u003d 0 ) )"},{"line_number":1601,"context_line":"    {"},{"line_number":1602,"context_line":"        return true;"},{"line_number":1603,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"b2bc803a_7e364e02","line":1600,"in_reply_to":"f8856fdf_5f40d6a4","updated":"2025-10-21 14:10:18.000000000","message":"Done","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":true,"context_lines":[{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"    if (is_multipoint \u0026\u0026 is_dco_enabled)"},{"line_number":1606,"context_line":"    {"},{"line_number":1607,"context_line":"        return true;"},{"line_number":1608,"context_line":"    }"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    return false;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"ac755fc1_a42389d2","line":1607,"updated":"2025-10-13 15:01:15.000000000","message":"A little bit of explanation why DCO is different is needed.","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"94ac3cf1d06dfa9a8f59f1a8c87efea1c9849242","unresolved":false,"context_lines":[{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"    if (is_multipoint \u0026\u0026 is_dco_enabled)"},{"line_number":1606,"context_line":"    {"},{"line_number":1607,"context_line":"        return true;"},{"line_number":1608,"context_line":"    }"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    return false;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"2a5d88e2_1d00ff0a","line":1607,"in_reply_to":"378a6658_7f7cade8","updated":"2025-10-21 14:10:18.000000000","message":"Done","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"53c0d542602b3a3b0ff5807d4327ef86f565cec1","unresolved":true,"context_lines":[{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"    if (is_multipoint \u0026\u0026 is_dco_enabled)"},{"line_number":1606,"context_line":"    {"},{"line_number":1607,"context_line":"        return true;"},{"line_number":1608,"context_line":"    }"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    return false;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"fc18e9d4_45882a8c","line":1607,"in_reply_to":"ac755fc1_a42389d2","updated":"2025-10-14 13:16:06.000000000","message":"we\u0027ve been debating this part. conclusion was that we can remove the check, as this is not what\u0027s needed here.","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"95a7fb9ab0253cd530c1928e2c8078a873d19c8b","unresolved":true,"context_lines":[{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"    if (is_multipoint \u0026\u0026 is_dco_enabled)"},{"line_number":1606,"context_line":"    {"},{"line_number":1607,"context_line":"        return true;"},{"line_number":1608,"context_line":"    }"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    return false;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"378a6658_7f7cade8","line":1607,"in_reply_to":"fc18e9d4_45882a8c","updated":"2025-10-14 13:54:46.000000000","message":"There should at least be some idea/comment in the source code as well. Otherwise it is just a \"magical constant\".","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":true,"context_lines":[{"line_number":1895,"context_line":"                        network,"},{"line_number":1896,"context_line":"                        gateway,"},{"line_number":1897,"context_line":"                        netmask);"},{"line_number":1898,"context_line":"    }"},{"line_number":1899,"context_line":"    else"},{"line_number":1900,"context_line":"    {"},{"line_number":1901,"context_line":"        argv_printf_cat(\u0026argv, \"-net %s -netmask %s -link -iface %s\","}],"source_content_type":"text/x-csrc","patch_set":11,"id":"657a25df_8073c041","line":1898,"updated":"2025-10-13 15:01:15.000000000","message":"Has this been tested on Open and NetBSD?","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"94ac3cf1d06dfa9a8f59f1a8c87efea1c9849242","unresolved":false,"context_lines":[{"line_number":1895,"context_line":"                        network,"},{"line_number":1896,"context_line":"                        gateway,"},{"line_number":1897,"context_line":"                        netmask);"},{"line_number":1898,"context_line":"    }"},{"line_number":1899,"context_line":"    else"},{"line_number":1900,"context_line":"    {"},{"line_number":1901,"context_line":"        argv_printf_cat(\u0026argv, \"-net %s -netmask %s -link -iface %s\","}],"source_content_type":"text/x-csrc","patch_set":11,"id":"85295ff5_ccdfe664","line":1898,"in_reply_to":"657a25df_8073c041","updated":"2025-10-21 14:10:18.000000000","message":"it was already tested from the first patch but i retested the latest patch on dradonfly 6.4.2, openbsd 7.7, freebsd 14.3, netbsd 10.0 and MacOS sonoma","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":true,"context_lines":[{"line_number":2007,"context_line":"is_gateway_in_vpn_subnet_ipv6(const struct in6_addr *gateway,"},{"line_number":2008,"context_line":"                              const struct in6_addr *vpn_subnet,"},{"line_number":2009,"context_line":"                              int netbits)"},{"line_number":2010,"context_line":"{"},{"line_number":2011,"context_line":"    struct in6_addr netmask \u003d netbits_to_netmask_ipv6(netbits);"},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"    for (int i \u003d 0; i \u003c 16; i++)"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"715e26fa_29fc79e0","line":2010,"updated":"2025-10-13 15:01:15.000000000","message":"I think this duplicates the code that was publicly accessible in https://gerrit.openvpn.net/c/openvpn/+/1191","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"94ac3cf1d06dfa9a8f59f1a8c87efea1c9849242","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"is_gateway_in_vpn_subnet_ipv6(const struct in6_addr *gateway,"},{"line_number":2008,"context_line":"                              const struct in6_addr *vpn_subnet,"},{"line_number":2009,"context_line":"                              int netbits)"},{"line_number":2010,"context_line":"{"},{"line_number":2011,"context_line":"    struct in6_addr netmask \u003d netbits_to_netmask_ipv6(netbits);"},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"    for (int i \u003d 0; i \u003c 16; i++)"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"0b6b4458_7d49c544","line":2010,"in_reply_to":"715e26fa_29fc79e0","updated":"2025-10-21 14:10:18.000000000","message":"Done","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"}],"src/openvpn/route.h":[{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fb0f931caece514d3dffc45e349702ae2b635a24","unresolved":true,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"void route_ipv6_clear_host_bits( struct route_ipv6 *r6 );"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"bool add_route_ipv6(struct route_ipv6 *r, const struct tuntap *tt, unsigned int flags, const struct env_set *es, openvpn_net_ctx_t *ctx, const bool is_multipoint);"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"void delete_route_ipv6(const struct route_ipv6 *r, const struct tuntap *tt, unsigned int flags, const struct env_set *es, openvpn_net_ctx_t *ctx, const bool is_multipoint);"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"c375c7a6_648618a0","line":274,"updated":"2025-10-13 15:01:15.000000000","message":"The naming here and the usage seem to disagree. `is_multipoint` sounds like the usage in a p2mp server context but the actual usage is that this flag is only used for the CM_TOP instance, which is more the initialisation of p2mp on startup. So this naming is quite confusing here.\n\nAlso why adding a flag as bool to the function vs adding it as extra flag in the route structure.","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"94ac3cf1d06dfa9a8f59f1a8c87efea1c9849242","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"void route_ipv6_clear_host_bits( struct route_ipv6 *r6 );"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"bool add_route_ipv6(struct route_ipv6 *r, const struct tuntap *tt, unsigned int flags, const struct env_set *es, openvpn_net_ctx_t *ctx, const bool is_multipoint);"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"void delete_route_ipv6(const struct route_ipv6 *r, const struct tuntap *tt, unsigned int flags, const struct env_set *es, openvpn_net_ctx_t *ctx, const bool is_multipoint);"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"0a1b545d_f913bbc8","line":274,"in_reply_to":"c375c7a6_648618a0","updated":"2025-10-21 14:10:18.000000000","message":"Done","commit_id":"0282e0a534a54534fc6b361371f920b584a1e3b5"}]}
