)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6893019d_d3070b2e","updated":"2026-02-16 12:10:39.000000000","message":"I stopped reviewing at some point. Enough to fix for now","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f6729a92d03dd41f057b943a3b80448fd2e434b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"482dbbd7_7b9580e8","updated":"2026-03-19 12:30:40.000000000","message":"Mostly done with obvious problems. Doing some testing now and noted some things about the actual behavior. Note that these are not necessarily objective problems but more my opinion of how I would expect it to work. So let me know what you think 😊","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"}],"src/openvpn/dco.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    if (o-\u003enetns)"},{"line_number":393,"context_line":"    {"},{"line_number":394,"context_line":"        msg(msglevel, \"Note: --netns not supported by ovpn-dco, disabling data channel offload.\");"},{"line_number":395,"context_line":"        return false;"},{"line_number":396,"context_line":"    }"},{"line_number":397,"context_line":"#endif /* if defined(_WIN32) */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f5b745f0_c74ba00a","line":394,"updated":"2026-02-16 12:10:39.000000000","message":"`ovpn` ? Or just \"DCO\"?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    if (o-\u003enetns)"},{"line_number":393,"context_line":"    {"},{"line_number":394,"context_line":"        msg(msglevel, \"Note: --netns not supported by ovpn-dco, disabling data channel offload.\");"},{"line_number":395,"context_line":"        return false;"},{"line_number":396,"context_line":"    }"},{"line_number":397,"context_line":"#endif /* if defined(_WIN32) */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"896aa530_aee37115","line":394,"in_reply_to":"f5b745f0_c74ba00a","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"}],"src/openvpn/networking.h":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f6729a92d03dd41f057b943a3b80448fd2e434b0","unresolved":true,"context_lines":[{"line_number":39,"context_line":"typedef void *openvpn_net_iface_t;"},{"line_number":40,"context_line":"#endif /* ifdef ENABLE_SITNL */"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"/* Only the iproute2 backend implements these functions,"},{"line_number":43,"context_line":" * the rest can rely on these stubs"},{"line_number":44,"context_line":" */"},{"line_number":45,"context_line":"#if !defined(ENABLE_IPROUTE) \u0026\u0026 !defined(ENABLE_SITNL) || defined(TARGET_ANDROID)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a54ba7ff_66357771","line":42,"updated":"2026-03-19 12:30:40.000000000","message":"This comment is outdated","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"43961da5ecb0370e4bea2329d2c96e50868f1045","unresolved":false,"context_lines":[{"line_number":39,"context_line":"typedef void *openvpn_net_iface_t;"},{"line_number":40,"context_line":"#endif /* ifdef ENABLE_SITNL */"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"/* Only the iproute2 backend implements these functions,"},{"line_number":43,"context_line":" * the rest can rely on these stubs"},{"line_number":44,"context_line":" */"},{"line_number":45,"context_line":"#if !defined(ENABLE_IPROUTE) \u0026\u0026 !defined(ENABLE_SITNL) || defined(TARGET_ANDROID)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"4ec40e14_ab031002","line":42,"in_reply_to":"a54ba7ff_66357771","updated":"2026-03-24 16:20:57.000000000","message":"Done","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"}],"src/openvpn/networking_sitnl.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":71,"context_line":"#define SITNL_NETNS_RTA(r) \\"},{"line_number":72,"context_line":"    ((struct rtattr *)(((char *)(r)) + NLMSG_ALIGN(sizeof(struct rtgenmsg))))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"#define NETNS_RUN_DIR  \"/var/run/netns\""},{"line_number":75,"context_line":"#define NETNS_ORIG_DIR \"/proc/self/ns/net\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"/* This function was originally implemented as a macro, but compiling with"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"97ff67c1_781261b5","line":74,"updated":"2026-02-16 12:10:39.000000000","message":"Wouldn\u0027t `/run` be a better value here? `/var/run` is just a symlink nowadays AFAIK","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":71,"context_line":"#define SITNL_NETNS_RTA(r) \\"},{"line_number":72,"context_line":"    ((struct rtattr *)(((char *)(r)) + NLMSG_ALIGN(sizeof(struct rtgenmsg))))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"#define NETNS_RUN_DIR  \"/var/run/netns\""},{"line_number":75,"context_line":"#define NETNS_ORIG_DIR \"/proc/self/ns/net\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"/* This function was originally implemented as a macro, but compiling with"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"fa0f2215_3cf98d28","line":74,"in_reply_to":"97ff67c1_781261b5","updated":"2026-02-26 09:48:44.000000000","message":"indeed","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_WARN, \"%s: Network namespace %s does not exist\\n\", __func__, path);"},{"line_number":207,"context_line":"            return -1;"},{"line_number":208,"context_line":"        }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"289f0216_601a33c5","line":206,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERRNO?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_WARN, \"%s: Network namespace %s does not exist\\n\", __func__, path);"},{"line_number":207,"context_line":"            return -1;"},{"line_number":208,"context_line":"        }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f4d47f64_4f660ee1","line":206,"in_reply_to":"289f0216_601a33c5","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":236,"context_line":"    orig_fd \u003d open(NETNS_ORIG_DIR, O_RDONLY | O_CLOEXEC);"},{"line_number":237,"context_line":"    if (orig_fd \u003c 0)"},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"        msg(M_WARN, \"%s: Cannot open original network namespace\\n\", __func__);"},{"line_number":240,"context_line":"        return -1;"},{"line_number":241,"context_line":"    }"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d1511ce1_4a61a209","line":239,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERRNO?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    orig_fd \u003d open(NETNS_ORIG_DIR, O_RDONLY | O_CLOEXEC);"},{"line_number":237,"context_line":"    if (orig_fd \u003c 0)"},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"        msg(M_WARN, \"%s: Cannot open original network namespace\\n\", __func__);"},{"line_number":240,"context_line":"        return -1;"},{"line_number":241,"context_line":"    }"},{"line_number":242,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c43227fc_0359781b","line":239,"in_reply_to":"d1511ce1_4a61a209","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":244,"context_line":"    netns_fd \u003d open(net_path, O_RDONLY | O_CLOEXEC);"},{"line_number":245,"context_line":"    if (netns_fd \u003c 0)"},{"line_number":246,"context_line":"    {"},{"line_number":247,"context_line":"        msg(M_WARN, \"%s: Cannot open network namespace \\\"%s\\\"\\n\", __func__, name);"},{"line_number":248,"context_line":"        close(orig_fd);"},{"line_number":249,"context_line":"        return -1;"},{"line_number":250,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"db2ee770_077ea5de","line":247,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERRNO","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    netns_fd \u003d open(net_path, O_RDONLY | O_CLOEXEC);"},{"line_number":245,"context_line":"    if (netns_fd \u003c 0)"},{"line_number":246,"context_line":"    {"},{"line_number":247,"context_line":"        msg(M_WARN, \"%s: Cannot open network namespace \\\"%s\\\"\\n\", __func__, name);"},{"line_number":248,"context_line":"        close(orig_fd);"},{"line_number":249,"context_line":"        return -1;"},{"line_number":250,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"67a2f3a1_46be9598","line":247,"in_reply_to":"db2ee770_077ea5de","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    if (setns(netns_fd, CLONE_NEWNET) \u003c 0)"},{"line_number":253,"context_line":"    {"},{"line_number":254,"context_line":"        msg(M_WARN, \"%s: setting the network namespace \\\"%s\\\" failed\\n\", __func__, name);"},{"line_number":255,"context_line":"        close(netns_fd);"},{"line_number":256,"context_line":"        close(orig_fd);"},{"line_number":257,"context_line":"        return -1;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"60e6c6bb_45c54b89","line":254,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERRNO","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    if (setns(netns_fd, CLONE_NEWNET) \u003c 0)"},{"line_number":253,"context_line":"    {"},{"line_number":254,"context_line":"        msg(M_WARN, \"%s: setting the network namespace \\\"%s\\\" failed\\n\", __func__, name);"},{"line_number":255,"context_line":"        close(netns_fd);"},{"line_number":256,"context_line":"        close(orig_fd);"},{"line_number":257,"context_line":"        return -1;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"be497947_bd26b285","line":254,"in_reply_to":"60e6c6bb_45c54b89","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    if (setns(orig_fd, CLONE_NEWNET) \u003c 0)"},{"line_number":271,"context_line":"    {"},{"line_number":272,"context_line":"        msg(M_WARN, \"%s: Cannot restore original network namespace\\n\", __func__);"},{"line_number":273,"context_line":"        close(orig_fd);"},{"line_number":274,"context_line":"        return -1;"},{"line_number":275,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"5e711262_50c89506","line":272,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERRNO","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    if (setns(orig_fd, CLONE_NEWNET) \u003c 0)"},{"line_number":271,"context_line":"    {"},{"line_number":272,"context_line":"        msg(M_WARN, \"%s: Cannot restore original network namespace\\n\", __func__);"},{"line_number":273,"context_line":"        close(orig_fd);"},{"line_number":274,"context_line":"        return -1;"},{"line_number":275,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"4c35413c_6640d246","line":272,"in_reply_to":"5e711262_50c89506","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    if (ret \u003c 0)"},{"line_number":634,"context_line":"    {"},{"line_number":635,"context_line":"        goto err;"},{"line_number":636,"context_line":"    }"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    ifindex \u003d res.i.ifi_index;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"15d5672a_5f164ecd","line":635,"updated":"2026-02-16 12:10:39.000000000","message":"just use return","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":632,"context_line":""},{"line_number":633,"context_line":"    if (ret \u003c 0)"},{"line_number":634,"context_line":"    {"},{"line_number":635,"context_line":"        goto err;"},{"line_number":636,"context_line":"    }"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    ifindex \u003d res.i.ifi_index;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"742c386b_4519cc6f","line":635,"in_reply_to":"15d5672a_5f164ecd","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":838,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":839,"context_line":"    {"},{"line_number":840,"context_line":"        msg(M_ERR, \"%s: if_nametoindex(%s) failed\", __func__, iface);"},{"line_number":841,"context_line":"        goto err;"},{"line_number":842,"context_line":"    }"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"    int netns_fd \u003d open(net_path, O_RDONLY);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e3edca05_87e906c4","line":841,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERR is fatal","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a75a01b6ba67e9d881aa540d9b246d7a905e7245","unresolved":true,"context_lines":[{"line_number":838,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":839,"context_line":"    {"},{"line_number":840,"context_line":"        msg(M_ERR, \"%s: if_nametoindex(%s) failed\", __func__, iface);"},{"line_number":841,"context_line":"        goto err;"},{"line_number":842,"context_line":"    }"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"    int netns_fd \u003d open(net_path, O_RDONLY);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6558e3ae_b6c53a15","line":841,"in_reply_to":"22e23784_c162668b","updated":"2026-02-26 11:37:24.000000000","message":"This changes it from effectively `M_FATAL | M_ERRNO` to `M_INFO | M_ERRNO`. That feels like a big change. If you want the error to be fatal, then just remove the code after the msg() call. If you do not want it to be fatal, then use `M_WARN | M_ERRNO`. `M_INFO` feels wrong.","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"5fa74736976396f3472554888e9cfa932add9d9e","unresolved":false,"context_lines":[{"line_number":838,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":839,"context_line":"    {"},{"line_number":840,"context_line":"        msg(M_ERR, \"%s: if_nametoindex(%s) failed\", __func__, iface);"},{"line_number":841,"context_line":"        goto err;"},{"line_number":842,"context_line":"    }"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"    int netns_fd \u003d open(net_path, O_RDONLY);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"122e5461_ae4d3b5a","line":841,"in_reply_to":"6558e3ae_b6c53a15","updated":"2026-02-26 13:39:42.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":true,"context_lines":[{"line_number":838,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":839,"context_line":"    {"},{"line_number":840,"context_line":"        msg(M_ERR, \"%s: if_nametoindex(%s) failed\", __func__, iface);"},{"line_number":841,"context_line":"        goto err;"},{"line_number":842,"context_line":"    }"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"    int netns_fd \u003d open(net_path, O_RDONLY);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"22e23784_c162668b","line":841,"in_reply_to":"e3edca05_87e906c4","updated":"2026-02-26 09:48:44.000000000","message":"M_ERRNO?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":845,"context_line":"    if (netns_fd \u003c 0)"},{"line_number":846,"context_line":"    {"},{"line_number":847,"context_line":"        msg(M_ERR, \"%s: open(%s) failed: %s\", __func__, netns, strerror(errno));"},{"line_number":848,"context_line":"        goto err;"},{"line_number":849,"context_line":"    }"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    req.n.nlmsg_len \u003d NLMSG_LENGTH(sizeof(req.i));"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"5ed22de4_b4c7950e","line":848,"updated":"2026-02-16 12:10:39.000000000","message":"M_ERR is fatal","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":true,"context_lines":[{"line_number":845,"context_line":"    if (netns_fd \u003c 0)"},{"line_number":846,"context_line":"    {"},{"line_number":847,"context_line":"        msg(M_ERR, \"%s: open(%s) failed: %s\", __func__, netns, strerror(errno));"},{"line_number":848,"context_line":"        goto err;"},{"line_number":849,"context_line":"    }"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    req.n.nlmsg_len \u003d NLMSG_LENGTH(sizeof(req.i));"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8a284417_909fc242","line":848,"in_reply_to":"5ed22de4_b4c7950e","updated":"2026-02-26 09:48:44.000000000","message":"M_ERRNO?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"5fa74736976396f3472554888e9cfa932add9d9e","unresolved":false,"context_lines":[{"line_number":845,"context_line":"    if (netns_fd \u003c 0)"},{"line_number":846,"context_line":"    {"},{"line_number":847,"context_line":"        msg(M_ERR, \"%s: open(%s) failed: %s\", __func__, netns, strerror(errno));"},{"line_number":848,"context_line":"        goto err;"},{"line_number":849,"context_line":"    }"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    req.n.nlmsg_len \u003d NLMSG_LENGTH(sizeof(req.i));"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"05bd4cdb_f0807205","line":848,"in_reply_to":"8a284417_909fc242","updated":"2026-02-26 13:39:42.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":911,"context_line":""},{"line_number":912,"context_line":"    CLEAR(req);"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    if (netns)"},{"line_number":915,"context_line":"    {"},{"line_number":916,"context_line":"        orig \u003d netns_switch(netns);"},{"line_number":917,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7cb5d904_f6b98d2c","line":914,"updated":"2026-02-16 12:10:39.000000000","message":"These 4 lines (counting the netns assignment) are copied often enough that they should be moved to a function or macro.","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":911,"context_line":""},{"line_number":912,"context_line":"    CLEAR(req);"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    if (netns)"},{"line_number":915,"context_line":"    {"},{"line_number":916,"context_line":"        orig \u003d netns_switch(netns);"},{"line_number":917,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d3926303_567f83d5","line":914,"in_reply_to":"7cb5d904_f6b98d2c","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":925,"context_line":"    ifindex \u003d openvpn_if_nametoindex(iface, get_or_create_netnsid_sitnl(netns));"},{"line_number":926,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":927,"context_line":"    {"},{"line_number":928,"context_line":"        msg(M_WARN, \"%s: rtnl: cannot get ifindex for %s: %s\", __func__, iface, strerror(errno));"},{"line_number":929,"context_line":"        return -ENOENT;"},{"line_number":930,"context_line":"    }"},{"line_number":931,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"48e4eb65_4e5b7e66","line":928,"updated":"2026-02-16 12:10:39.000000000","message":"Should use M_ERRNO instead of manually using strerror","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":925,"context_line":"    ifindex \u003d openvpn_if_nametoindex(iface, get_or_create_netnsid_sitnl(netns));"},{"line_number":926,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":927,"context_line":"    {"},{"line_number":928,"context_line":"        msg(M_WARN, \"%s: rtnl: cannot get ifindex for %s: %s\", __func__, iface, strerror(errno));"},{"line_number":929,"context_line":"        return -ENOENT;"},{"line_number":930,"context_line":"    }"},{"line_number":931,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"88485286_b7b56c97","line":928,"in_reply_to":"48e4eb65_4e5b7e66","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    msg(M_INFO, \"%s: set %s %s\", __func__, iface, up ? \"up\" : \"down\");"},{"line_number":949,"context_line":""},{"line_number":950,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":951,"context_line":"    if (ret \u003c 0)"},{"line_number":952,"context_line":"    {"},{"line_number":953,"context_line":"        goto err;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e1d31283_33bdeb60","line":950,"updated":"2026-02-16 12:10:39.000000000","message":"Just declare ret here. C has moved on...","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    msg(M_INFO, \"%s: set %s %s\", __func__, iface, up ? \"up\" : \"down\");"},{"line_number":949,"context_line":""},{"line_number":950,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":951,"context_line":"    if (ret \u003c 0)"},{"line_number":952,"context_line":"    {"},{"line_number":953,"context_line":"        goto err;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f5ac3d5e_ae177443","line":950,"in_reply_to":"e1d31283_33bdeb60","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":950,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":951,"context_line":"    if (ret \u003c 0)"},{"line_number":952,"context_line":"    {"},{"line_number":953,"context_line":"        goto err;"},{"line_number":954,"context_line":"    }"},{"line_number":955,"context_line":"    if (orig \u003e\u003d 0)"},{"line_number":956,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f52dde96_e5b369fd","line":953,"updated":"2026-02-16 12:10:39.000000000","message":"Just use return","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":950,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":951,"context_line":"    if (ret \u003c 0)"},{"line_number":952,"context_line":"    {"},{"line_number":953,"context_line":"        goto err;"},{"line_number":954,"context_line":"    }"},{"line_number":955,"context_line":"    if (orig \u003e\u003d 0)"},{"line_number":956,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"18e6b8dd_66e39679","line":953,"in_reply_to":"f52dde96_e5b369fd","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":952,"context_line":"    {"},{"line_number":953,"context_line":"        goto err;"},{"line_number":954,"context_line":"    }"},{"line_number":955,"context_line":"    if (orig \u003e\u003d 0)"},{"line_number":956,"context_line":"    {"},{"line_number":957,"context_line":"        netns_restore(orig);"},{"line_number":958,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e4633213_a3d2a888","line":955,"updated":"2026-02-16 12:10:39.000000000","message":"Also move to function or macro","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":952,"context_line":"    {"},{"line_number":953,"context_line":"        goto err;"},{"line_number":954,"context_line":"    }"},{"line_number":955,"context_line":"    if (orig \u003e\u003d 0)"},{"line_number":956,"context_line":"    {"},{"line_number":957,"context_line":"        netns_restore(orig);"},{"line_number":958,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9305239d_8149d39f","line":955,"in_reply_to":"e4633213_a3d2a888","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":999,"context_line":"    {"},{"line_number":1000,"context_line":"        netns_restore(orig);"},{"line_number":1001,"context_line":"    }"},{"line_number":1002,"context_line":"err:"},{"line_number":1003,"context_line":"    return ret;"},{"line_number":1004,"context_line":"}"},{"line_number":1005,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3706333e_7b657959","line":1002,"updated":"2026-02-16 12:10:39.000000000","message":"Unused label?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":true,"context_lines":[{"line_number":999,"context_line":"    {"},{"line_number":1000,"context_line":"        netns_restore(orig);"},{"line_number":1001,"context_line":"    }"},{"line_number":1002,"context_line":"err:"},{"line_number":1003,"context_line":"    return ret;"},{"line_number":1004,"context_line":"}"},{"line_number":1005,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"43479fdf_4052fd95","line":1002,"in_reply_to":"3706333e_7b657959","updated":"2026-02-26 09:48:44.000000000","message":"SITNL_ADDATTR() requires a label","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a75a01b6ba67e9d881aa540d9b246d7a905e7245","unresolved":false,"context_lines":[{"line_number":999,"context_line":"    {"},{"line_number":1000,"context_line":"        netns_restore(orig);"},{"line_number":1001,"context_line":"    }"},{"line_number":1002,"context_line":"err:"},{"line_number":1003,"context_line":"    return ret;"},{"line_number":1004,"context_line":"}"},{"line_number":1005,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6bd42df7_ac3131a1","line":1002,"in_reply_to":"43479fdf_4052fd95","updated":"2026-02-26 11:37:24.000000000","message":"Acknowledged","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":1016,"context_line":"    {"},{"line_number":1017,"context_line":"        orig \u003d netns_switch(netns);"},{"line_number":1018,"context_line":"    }"},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    ifindex \u003d openvpn_if_nametoindex(iface, get_or_create_netnsid_sitnl(netns));"},{"line_number":1022,"context_line":"    if (ifindex \u003d\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a2a79f77_a7e3716c","line":1019,"updated":"2026-02-16 12:10:39.000000000","message":"spurious empty line","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"    {"},{"line_number":1017,"context_line":"        orig \u003d netns_switch(netns);"},{"line_number":1018,"context_line":"    }"},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":""},{"line_number":1021,"context_line":"    ifindex \u003d openvpn_if_nametoindex(iface, get_or_create_netnsid_sitnl(netns));"},{"line_number":1022,"context_line":"    if (ifindex \u003d\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"164779a4_0a0706ba","line":1019,"in_reply_to":"a2a79f77_a7e3716c","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":1061,"context_line":"    {"},{"line_number":1062,"context_line":"        orig \u003d netns_switch(netns);"},{"line_number":1063,"context_line":"    }"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    req.n.nlmsg_len \u003d NLMSG_LENGTH(sizeof(req.i));"},{"line_number":1067,"context_line":"    req.n.nlmsg_type \u003d cmd;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"99000be3_9e6be45b","line":1064,"updated":"2026-02-16 12:10:39.000000000","message":"spurious empty line","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"    {"},{"line_number":1062,"context_line":"        orig \u003d netns_switch(netns);"},{"line_number":1063,"context_line":"    }"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":""},{"line_number":1066,"context_line":"    req.n.nlmsg_len \u003d NLMSG_LENGTH(sizeof(req.i));"},{"line_number":1067,"context_line":"    req.n.nlmsg_type \u003d cmd;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"034b03f7_9d56a11c","line":1064,"in_reply_to":"99000be3_9e6be45b","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":1121,"context_line":"    {"},{"line_number":1122,"context_line":"        netns_restore(orig);"},{"line_number":1123,"context_line":"    }"},{"line_number":1124,"context_line":"err:"},{"line_number":1125,"context_line":"    return ret;"},{"line_number":1126,"context_line":"}"},{"line_number":1127,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7c543e33_d1045522","line":1124,"updated":"2026-02-16 12:10:39.000000000","message":"Unused label","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":true,"context_lines":[{"line_number":1121,"context_line":"    {"},{"line_number":1122,"context_line":"        netns_restore(orig);"},{"line_number":1123,"context_line":"    }"},{"line_number":1124,"context_line":"err:"},{"line_number":1125,"context_line":"    return ret;"},{"line_number":1126,"context_line":"}"},{"line_number":1127,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c991facb_65fb1024","line":1124,"in_reply_to":"7c543e33_d1045522","updated":"2026-02-26 09:48:44.000000000","message":"SITNL_ADDATTR() requires a label","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a75a01b6ba67e9d881aa540d9b246d7a905e7245","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    {"},{"line_number":1122,"context_line":"        netns_restore(orig);"},{"line_number":1123,"context_line":"    }"},{"line_number":1124,"context_line":"err:"},{"line_number":1125,"context_line":"    return ret;"},{"line_number":1126,"context_line":"}"},{"line_number":1127,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"623af649_3ec0329e","line":1124,"in_reply_to":"c991facb_65fb1024","updated":"2026-02-26 11:37:24.000000000","message":"Acknowledged","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"    if (ret \u003c 0)"},{"line_number":1832,"context_line":"    {"},{"line_number":1833,"context_line":"        goto err;"},{"line_number":1834,"context_line":"    }"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":"err:"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a9d4fe8c_8da527ff","line":1833,"updated":"2026-02-16 12:10:39.000000000","message":"WHAT?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"    if (ret \u003c 0)"},{"line_number":1832,"context_line":"    {"},{"line_number":1833,"context_line":"        goto err;"},{"line_number":1834,"context_line":"    }"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":"err:"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9da49ebb_0c7cdb54","line":1833,"in_reply_to":"a9d4fe8c_8da527ff","updated":"2026-02-26 09:48:44.000000000","message":"Whoops","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"    if (ret \u003c 0)"},{"line_number":1880,"context_line":"    {"},{"line_number":1881,"context_line":"        goto err;"},{"line_number":1882,"context_line":"    }"},{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":"err:"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"57c51c0b_69ab4bb4","line":1881,"updated":"2026-02-16 12:10:39.000000000","message":"lol","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":1878,"context_line":""},{"line_number":1879,"context_line":"    if (ret \u003c 0)"},{"line_number":1880,"context_line":"    {"},{"line_number":1881,"context_line":"        goto err;"},{"line_number":1882,"context_line":"    }"},{"line_number":1883,"context_line":""},{"line_number":1884,"context_line":"err:"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a803d839_9934efff","line":1881,"in_reply_to":"57c51c0b_69ab4bb4","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"    /* First get */"},{"line_number":1901,"context_line":"    netnsid \u003d netns_id_from_name_sitnl(net_path);"},{"line_number":1902,"context_line":"    if (netnsid \u003e\u003d 0)"},{"line_number":1903,"context_line":"        return netnsid;"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"    /* No netnsid yet? Try to assign one */"},{"line_number":1906,"context_line":"    netnsid \u003d set_netns_id_from_name_sitnl(net_path);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"09b54618_34113780","line":1903,"updated":"2026-02-16 12:10:39.000000000","message":"Hmm, why does clang-format not fix this?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2ac22879173d198a24e3d3dc29eb0ea1f62bd152","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"    /* First get */"},{"line_number":1901,"context_line":"    netnsid \u003d netns_id_from_name_sitnl(net_path);"},{"line_number":1902,"context_line":"    if (netnsid \u003e\u003d 0)"},{"line_number":1903,"context_line":"        return netnsid;"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"    /* No netnsid yet? Try to assign one */"},{"line_number":1906,"context_line":"    netnsid \u003d set_netns_id_from_name_sitnl(net_path);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"330a0872_0cff1ab0","line":1903,"in_reply_to":"09b54618_34113780","updated":"2026-02-16 12:25:19.000000000","message":"Addressed in http://gerrit.openvpn.net/c/openvpn/+/1529","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a75a01b6ba67e9d881aa540d9b246d7a905e7245","unresolved":false,"context_lines":[{"line_number":1900,"context_line":"    /* First get */"},{"line_number":1901,"context_line":"    netnsid \u003d netns_id_from_name_sitnl(net_path);"},{"line_number":1902,"context_line":"    if (netnsid \u003e\u003d 0)"},{"line_number":1903,"context_line":"        return netnsid;"},{"line_number":1904,"context_line":""},{"line_number":1905,"context_line":"    /* No netnsid yet? Try to assign one */"},{"line_number":1906,"context_line":"    netnsid \u003d set_netns_id_from_name_sitnl(net_path);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3c69f209_c727ee44","line":1903,"in_reply_to":"330a0872_0cff1ab0","updated":"2026-02-26 11:37:24.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a75a01b6ba67e9d881aa540d9b246d7a905e7245","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_ERRNO, \"%s: Network namespace %s does not exist\\n\", __func__, path);"},{"line_number":207,"context_line":"            return -1;"},{"line_number":208,"context_line":"        }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8758f6bd_4e04d658","line":206,"updated":"2026-02-26 11:37:24.000000000","message":"Hmm, why did you change `M_WARN` to `M_ERRNO`? That means the same as `M_INFO | M_ERRNO` AFAICT. So I would have expected you to retain the `M_WARN`. `M_ERRNO` is not a level but an additional flag that ensures that strerr output is appended.","commit_id":"3d88d1d81b73abd8bbd4caa1bb6084670c9c2104"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"5fa74736976396f3472554888e9cfa932add9d9e","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_ERRNO, \"%s: Network namespace %s does not exist\\n\", __func__, path);"},{"line_number":207,"context_line":"            return -1;"},{"line_number":208,"context_line":"        }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a653993b_b8776da3","line":206,"in_reply_to":"8758f6bd_4e04d658","updated":"2026-02-26 13:39:42.000000000","message":"Done","commit_id":"3d88d1d81b73abd8bbd4caa1bb6084670c9c2104"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"8c4077fdd5ab95548386fc6b498582b7161e778a","unresolved":true,"context_lines":[{"line_number":635,"context_line":"    req.n.nlmsg_type \u003d RTM_GETLINK;"},{"line_number":636,"context_line":"    req.n.nlmsg_flags \u003d NLM_F_REQUEST;"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    SITNL_ADDATTR(\u0026req.n, sizeof(req), IFLA_TARGET_NETNSID, \u0026netnsid, 4);"},{"line_number":639,"context_line":"    SITNL_ADDATTR(\u0026req.n, sizeof(req), IFLA_IFNAME, ifname, strlen(ifname) + 1);"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, sitnl_link_get_ifindex, \u0026res);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"57e35eeb_25accb45","line":638,"updated":"2026-03-17 11:34:37.000000000","message":"Yes, sizeof(int) \u003d\u003d 4, but do we need to hard-code this here?\n\nThis issue is all over the code, only noting the first instance I found.","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"73d11b0dc3b3762059cd40e0dce62ef03b94a3b9","unresolved":true,"context_lines":[{"line_number":635,"context_line":"    req.n.nlmsg_type \u003d RTM_GETLINK;"},{"line_number":636,"context_line":"    req.n.nlmsg_flags \u003d NLM_F_REQUEST;"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    SITNL_ADDATTR(\u0026req.n, sizeof(req), IFLA_TARGET_NETNSID, \u0026netnsid, 4);"},{"line_number":639,"context_line":"    SITNL_ADDATTR(\u0026req.n, sizeof(req), IFLA_IFNAME, ifname, strlen(ifname) + 1);"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, sitnl_link_get_ifindex, \u0026res);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"bc95d175_56010af8","line":638,"in_reply_to":"57e35eeb_25accb45","updated":"2026-03-17 11:42:16.000000000","message":"I think we should seriously consider adding functions that are type like SITNL_ADDATTR_U32 and so on to avoid the issue entirely.","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"18075f1a50996834ebabba5ab322d7ba82ee807a","unresolved":false,"context_lines":[{"line_number":635,"context_line":"    req.n.nlmsg_type \u003d RTM_GETLINK;"},{"line_number":636,"context_line":"    req.n.nlmsg_flags \u003d NLM_F_REQUEST;"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    SITNL_ADDATTR(\u0026req.n, sizeof(req), IFLA_TARGET_NETNSID, \u0026netnsid, 4);"},{"line_number":639,"context_line":"    SITNL_ADDATTR(\u0026req.n, sizeof(req), IFLA_IFNAME, ifname, strlen(ifname) + 1);"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, sitnl_link_get_ifindex, \u0026res);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"229b5b69_31a021e5","line":638,"in_reply_to":"bc95d175_56010af8","updated":"2026-03-17 16:22:34.000000000","message":"Done","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"8c4077fdd5ab95548386fc6b498582b7161e778a","unresolved":true,"context_lines":[{"line_number":1169,"context_line":"        return ret;"},{"line_number":1170,"context_line":"    }"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"    netns_restore(orig);"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"    return ret;"},{"line_number":1175,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"cc6d4520_806e8ed9","line":1172,"updated":"2026-03-17 11:34:37.000000000","message":"Why do we skip the restore on error?","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"18075f1a50996834ebabba5ab322d7ba82ee807a","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        return ret;"},{"line_number":1170,"context_line":"    }"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"    netns_restore(orig);"},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"    return ret;"},{"line_number":1175,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d0985676_7aa42374","line":1172,"in_reply_to":"cc6d4520_806e8ed9","updated":"2026-03-17 16:22:34.000000000","message":"Forgetfulness","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"8c4077fdd5ab95548386fc6b498582b7161e778a","unresolved":true,"context_lines":[{"line_number":1344,"context_line":"    ifindex \u003d openvpn_if_nametoindex(iface, ctx);"},{"line_number":1345,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":1346,"context_line":"    {"},{"line_number":1347,"context_line":"        msg(M_WARN, \"%s: cannot get ifindex for %s: %s\", __func__, np(iface), strerror(errno));"},{"line_number":1348,"context_line":"        return -ENOENT;"},{"line_number":1349,"context_line":"    }"},{"line_number":1350,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"6b59d92f_2d13ab27","line":1347,"updated":"2026-03-17 11:34:37.000000000","message":"Please switch to M_ERRNO as well","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"18075f1a50996834ebabba5ab322d7ba82ee807a","unresolved":false,"context_lines":[{"line_number":1344,"context_line":"    ifindex \u003d openvpn_if_nametoindex(iface, ctx);"},{"line_number":1345,"context_line":"    if (ifindex \u003d\u003d 0)"},{"line_number":1346,"context_line":"    {"},{"line_number":1347,"context_line":"        msg(M_WARN, \"%s: cannot get ifindex for %s: %s\", __func__, np(iface), strerror(errno));"},{"line_number":1348,"context_line":"        return -ENOENT;"},{"line_number":1349,"context_line":"    }"},{"line_number":1350,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"80003e3d_ecd05fe7","line":1347,"in_reply_to":"6b59d92f_2d13ab27","updated":"2026-03-17 16:22:34.000000000","message":"Done","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":768,"context_line":"        close(netns_fd);"},{"line_number":769,"context_line":"    }"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    if (ret \u003c 0)"},{"line_number":772,"context_line":"    {"},{"line_number":773,"context_line":"        goto err;"},{"line_number":774,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4314739e_2d4bc1d9","line":771,"updated":"2026-03-18 10:21:01.000000000","message":"Redundant code.","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        close(netns_fd);"},{"line_number":769,"context_line":"    }"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    if (ret \u003c 0)"},{"line_number":772,"context_line":"    {"},{"line_number":773,"context_line":"        goto err;"},{"line_number":774,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"167513fa_e7d6d350","line":771,"in_reply_to":"4314739e_2d4bc1d9","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":816,"context_line":"        close(netns_fd);"},{"line_number":817,"context_line":"    }"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"    if (ret \u003c 0)"},{"line_number":820,"context_line":"    {"},{"line_number":821,"context_line":"        goto err;"},{"line_number":822,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"bdeed08b_be6f179c","line":819,"updated":"2026-03-18 10:21:01.000000000","message":"redundant code","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        close(netns_fd);"},{"line_number":817,"context_line":"    }"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"    if (ret \u003c 0)"},{"line_number":820,"context_line":"    {"},{"line_number":821,"context_line":"        goto err;"},{"line_number":822,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7eddcf9c_aaa945e8","line":819,"in_reply_to":"bdeed08b_be6f179c","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"    if (!iface)"},{"line_number":1136,"context_line":"    {"},{"line_number":1137,"context_line":"        netns_restore(orig);"},{"line_number":1138,"context_line":"        msg(M_WARN, \"%s: passed NULL interface\", __func__);"},{"line_number":1139,"context_line":"        return -EINVAL;"},{"line_number":1140,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"dd19d5b9_09ff231b","line":1137,"updated":"2026-03-18 10:21:01.000000000","message":"instead just move the code around so the switch happens after the check","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"    if (!iface)"},{"line_number":1136,"context_line":"    {"},{"line_number":1137,"context_line":"        netns_restore(orig);"},{"line_number":1138,"context_line":"        msg(M_WARN, \"%s: passed NULL interface\", __func__);"},{"line_number":1139,"context_line":"        return -EINVAL;"},{"line_number":1140,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"537e9aad_7a6ad766","line":1137,"in_reply_to":"dd19d5b9_09ff231b","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1166,"context_line":"    msg(M_INFO, \"%s: set %s %s\", __func__, iface, up ? \"up\" : \"down\");"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"    int ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1169,"context_line":"    if (ret \u003c 0)"},{"line_number":1170,"context_line":"    {"},{"line_number":1171,"context_line":"        netns_restore(orig);"},{"line_number":1172,"context_line":"        return ret;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"efa59517_408ec8ff","line":1169,"updated":"2026-03-18 10:21:01.000000000","message":"redundant code","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"    msg(M_INFO, \"%s: set %s %s\", __func__, iface, up ? \"up\" : \"down\");"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"    int ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1169,"context_line":"    if (ret \u003c 0)"},{"line_number":1170,"context_line":"    {"},{"line_number":1171,"context_line":"        netns_restore(orig);"},{"line_number":1172,"context_line":"        return ret;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"f7070273_3fab86e7","line":1169,"in_reply_to":"efa59517_408ec8ff","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"    netns_restore(orig);"},{"line_number":1212,"context_line":"err:"},{"line_number":1213,"context_line":"    return ret;"},{"line_number":1214,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"eb0d21db_0305708b","line":1211,"updated":"2026-03-18 10:21:01.000000000","message":"restore needs to be after err:","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1208,"context_line":""},{"line_number":1209,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"    netns_restore(orig);"},{"line_number":1212,"context_line":"err:"},{"line_number":1213,"context_line":"    return ret;"},{"line_number":1214,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"670cfaf3_d7b151a8","line":1211,"in_reply_to":"eb0d21db_0305708b","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1244,"context_line":""},{"line_number":1245,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"    netns_restore(orig);"},{"line_number":1248,"context_line":"err:"},{"line_number":1249,"context_line":"    return ret;"},{"line_number":1250,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c1f79458_0f7d935d","line":1247,"updated":"2026-03-18 10:21:01.000000000","message":"restore needs to be after err:","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1244,"context_line":""},{"line_number":1245,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"    netns_restore(orig);"},{"line_number":1248,"context_line":"err:"},{"line_number":1249,"context_line":"    return ret;"},{"line_number":1250,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"cb3e6ac1_b795495f","line":1247,"in_reply_to":"c1f79458_0f7d935d","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1280,"context_line":"            break;"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        default:"},{"line_number":1283,"context_line":"            netns_restore(orig);"},{"line_number":1284,"context_line":"            msg(M_WARN, \"%s: rtnl: unknown address family %d\", __func__, af_family);"},{"line_number":1285,"context_line":"            return -EINVAL;"},{"line_number":1286,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"dcedc153_51d7fe41","line":1283,"updated":"2026-03-18 10:21:01.000000000","message":"move the netns_switch to after the parameter checks","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"            break;"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        default:"},{"line_number":1283,"context_line":"            netns_restore(orig);"},{"line_number":1284,"context_line":"            msg(M_WARN, \"%s: rtnl: unknown address family %d\", __func__, af_family);"},{"line_number":1285,"context_line":"            return -EINVAL;"},{"line_number":1286,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"1ae478b0_27bb0047","line":1283,"in_reply_to":"dcedc153_51d7fe41","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1318,"context_line":"    }"},{"line_number":1319,"context_line":"    if (orig \u003e\u003d 0)"},{"line_number":1320,"context_line":"    {"},{"line_number":1321,"context_line":"        netns_restore(orig);"},{"line_number":1322,"context_line":"    }"},{"line_number":1323,"context_line":""},{"line_number":1324,"context_line":"err:"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"37b3e127_ecd5e4c8","line":1321,"updated":"2026-03-18 10:21:01.000000000","message":"needs to be after err:","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1318,"context_line":"    }"},{"line_number":1319,"context_line":"    if (orig \u003e\u003d 0)"},{"line_number":1320,"context_line":"    {"},{"line_number":1321,"context_line":"        netns_restore(orig);"},{"line_number":1322,"context_line":"    }"},{"line_number":1323,"context_line":""},{"line_number":1324,"context_line":"err:"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"0535a454_21dfab59","line":1321,"in_reply_to":"37b3e127_ecd5e4c8","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1413,"context_line":"            break;"},{"line_number":1414,"context_line":""},{"line_number":1415,"context_line":"        default:"},{"line_number":1416,"context_line":"            netns_restore(orig);"},{"line_number":1417,"context_line":"            return -EINVAL;"},{"line_number":1418,"context_line":"    }"},{"line_number":1419,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"2da76258_bc75db17","line":1416,"updated":"2026-03-18 10:21:01.000000000","message":"move switch to after parameter check","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"            break;"},{"line_number":1414,"context_line":""},{"line_number":1415,"context_line":"        default:"},{"line_number":1416,"context_line":"            netns_restore(orig);"},{"line_number":1417,"context_line":"            return -EINVAL;"},{"line_number":1418,"context_line":"    }"},{"line_number":1419,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"114af87d_61ddd36d","line":1416,"in_reply_to":"2da76258_bc75db17","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1461,"context_line":""},{"line_number":1462,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    netns_restore(orig);"},{"line_number":1465,"context_line":"err:"},{"line_number":1466,"context_line":"    return ret;"},{"line_number":1467,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"37f50a5e_1a48206b","line":1464,"updated":"2026-03-18 10:21:01.000000000","message":"after err:","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1461,"context_line":""},{"line_number":1462,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    netns_restore(orig);"},{"line_number":1465,"context_line":"err:"},{"line_number":1466,"context_line":"    return ret;"},{"line_number":1467,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c68c9df0_09f15400","line":1464,"in_reply_to":"37f50a5e_1a48206b","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"    if (!ifindex)"},{"line_number":1951,"context_line":"    {"},{"line_number":1952,"context_line":"        netns_restore(orig);"},{"line_number":1953,"context_line":"        return -errno;"},{"line_number":1954,"context_line":"    }"},{"line_number":1955,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"20b0928d_d826d6f3","line":1952,"updated":"2026-03-18 10:21:01.000000000","message":"restore before switch","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"    if (!ifindex)"},{"line_number":1951,"context_line":"    {"},{"line_number":1952,"context_line":"        netns_restore(orig);"},{"line_number":1953,"context_line":"        return -errno;"},{"line_number":1954,"context_line":"    }"},{"line_number":1955,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c933e7c7_5cf78d92","line":1952,"in_reply_to":"20b0928d_d826d6f3","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    if (ret \u003c 0)"},{"line_number":1970,"context_line":"    {"},{"line_number":1971,"context_line":"        netns_restore(orig);"},{"line_number":1972,"context_line":"        goto err;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a4d99beb_485b5051","line":1969,"updated":"2026-03-18 10:21:01.000000000","message":"redundant code","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"fe429870541ea2bc7dff5d0d0e8ebe3f241fc86b","unresolved":false,"context_lines":[{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1968,"context_line":""},{"line_number":1969,"context_line":"    if (ret \u003c 0)"},{"line_number":1970,"context_line":"    {"},{"line_number":1971,"context_line":"        netns_restore(orig);"},{"line_number":1972,"context_line":"        goto err;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"21b10505_c0d56d20","line":1969,"in_reply_to":"a4d99beb_485b5051","updated":"2026-03-18 16:15:32.000000000","message":"Done","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6f9dad40b7bafe1a95e0dac0389dba5762cedc93","unresolved":true,"context_lines":[{"line_number":278,"context_line":"    if (setns(orig_fd, CLONE_NEWNET) \u003c 0)"},{"line_number":279,"context_line":"    {"},{"line_number":280,"context_line":"        msg(M_WARN | M_ERRNO, \"%s: Cannot restore original network namespace\", __func__);"},{"line_number":281,"context_line":"        close(orig_fd);"},{"line_number":282,"context_line":"        return;"},{"line_number":283,"context_line":"    }"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"2c442d92_883b2fcf","line":281,"updated":"2026-03-18 16:30:27.000000000","message":"The code is redundant. You do exactly the same in the non-error case.","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"31d2b5572467fc45f906fcf2e641aade228d7708","unresolved":false,"context_lines":[{"line_number":278,"context_line":"    if (setns(orig_fd, CLONE_NEWNET) \u003c 0)"},{"line_number":279,"context_line":"    {"},{"line_number":280,"context_line":"        msg(M_WARN | M_ERRNO, \"%s: Cannot restore original network namespace\", __func__);"},{"line_number":281,"context_line":"        close(orig_fd);"},{"line_number":282,"context_line":"        return;"},{"line_number":283,"context_line":"    }"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"d4fd6d44_e633ccac","line":281,"in_reply_to":"2c442d92_883b2fcf","updated":"2026-03-19 09:03:56.000000000","message":"Done","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6f9dad40b7bafe1a95e0dac0389dba5762cedc93","unresolved":true,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    sitnl_send(\u0026req.n, 0, 0, sitnl_nsid_save, \u0026netnsid);"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"    if (netns_fd \u003e\u003d 0)"},{"line_number":767,"context_line":"    {"},{"line_number":768,"context_line":"        close(netns_fd);"},{"line_number":769,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"b5d060c5_af6a3dc7","line":766,"updated":"2026-03-18 16:30:27.000000000","message":"Needs to be moved below err:","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"31d2b5572467fc45f906fcf2e641aade228d7708","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    sitnl_send(\u0026req.n, 0, 0, sitnl_nsid_save, \u0026netnsid);"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"    if (netns_fd \u003e\u003d 0)"},{"line_number":767,"context_line":"    {"},{"line_number":768,"context_line":"        close(netns_fd);"},{"line_number":769,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"71fccbb4_f14d9dec","line":766,"in_reply_to":"b5d060c5_af6a3dc7","updated":"2026-03-19 09:03:56.000000000","message":"Done","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6f9dad40b7bafe1a95e0dac0389dba5762cedc93","unresolved":true,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"    if (netns_fd \u003e\u003d 0)"},{"line_number":810,"context_line":"    {"},{"line_number":811,"context_line":"        close(netns_fd);"},{"line_number":812,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"348706a1_45915420","line":809,"updated":"2026-03-18 16:30:27.000000000","message":"Needs to be moved below err:","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"31d2b5572467fc45f906fcf2e641aade228d7708","unresolved":false,"context_lines":[{"line_number":806,"context_line":""},{"line_number":807,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"    if (netns_fd \u003e\u003d 0)"},{"line_number":810,"context_line":"    {"},{"line_number":811,"context_line":"        close(netns_fd);"},{"line_number":812,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"2c710d4d_b0b4bad4","line":809,"in_reply_to":"348706a1_45915420","updated":"2026-03-19 09:03:56.000000000","message":"Done","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6f9dad40b7bafe1a95e0dac0389dba5762cedc93","unresolved":true,"context_lines":[{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"    if (netns_fd \u003e\u003d 0)"},{"line_number":1074,"context_line":"    {"},{"line_number":1075,"context_line":"        close(netns_fd);"},{"line_number":1076,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"33d945d2_4b57e115","line":1073,"updated":"2026-03-18 16:30:27.000000000","message":"Needs to be moved below err:","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"31d2b5572467fc45f906fcf2e641aade228d7708","unresolved":false,"context_lines":[{"line_number":1070,"context_line":""},{"line_number":1071,"context_line":"    ret \u003d sitnl_send(\u0026req.n, 0, 0, NULL, NULL);"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"    if (netns_fd \u003e\u003d 0)"},{"line_number":1074,"context_line":"    {"},{"line_number":1075,"context_line":"        close(netns_fd);"},{"line_number":1076,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"44d96a0e_641d34b2","line":1073,"in_reply_to":"33d945d2_4b57e115","updated":"2026-03-19 09:03:56.000000000","message":"Done","commit_id":"1a5f6cd0a9102ceaa80047f3213a8ac6563c4d9f"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f6729a92d03dd41f057b943a3b80448fd2e434b0","unresolved":true,"context_lines":[{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_WARN | M_ERRNO, \"%s: Network namespace %s does not exist\", __func__, path);"},{"line_number":207,"context_line":"            return -1;"},{"line_number":208,"context_line":"        }"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        ctx-\u003enetns \u003d c-\u003eoptions.netns;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"bd778cd2_164b398c","line":207,"updated":"2026-03-19 12:30:40.000000000","message":"Note that this return value is meaningless since no code ever checks it. I would suggest that a non-existent namespace should be a fatal error?","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"43961da5ecb0370e4bea2329d2c96e50868f1045","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_WARN | M_ERRNO, \"%s: Network namespace %s does not exist\", __func__, path);"},{"line_number":207,"context_line":"            return -1;"},{"line_number":208,"context_line":"        }"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        ctx-\u003enetns \u003d c-\u003eoptions.netns;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"c17f7f0d_724d403e","line":207,"in_reply_to":"bd778cd2_164b398c","updated":"2026-03-24 16:20:57.000000000","message":"Done","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2d06845782bbbac7bcc380012fd0c5f55d60a9d7","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_FATAL | M_ERRNO, \"%s: Network namespace %s does not exist\", __func__, path);"},{"line_number":207,"context_line":"        }"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        ctx-\u003enetns \u003d c-\u003eoptions.netns;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"9c619d65_e3b07bdc","line":206,"updated":"2026-03-24 16:26:22.000000000","message":"`#define M_ERR    (M_FATAL | M_ERRNO)`\nPlease use that.","commit_id":"558efe202a3c39b9a69c158b5cd453e38eaefbae"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"1923df62dca2f5d33a5cb37d3980b1e56c92ff8c","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if (stat(path, \u0026st) !\u003d 0)"},{"line_number":205,"context_line":"        {"},{"line_number":206,"context_line":"            msg(M_FATAL | M_ERRNO, \"%s: Network namespace %s does not exist\", __func__, path);"},{"line_number":207,"context_line":"        }"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        ctx-\u003enetns \u003d c-\u003eoptions.netns;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"30afdc96_915e2f09","line":206,"in_reply_to":"9c619d65_e3b07bdc","updated":"2026-03-24 16:35:00.000000000","message":"Done","commit_id":"558efe202a3c39b9a69c158b5cd453e38eaefbae"}],"src/openvpn/networking_sitnl.h":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":49,"context_line":" * that namespace via setns()."},{"line_number":50,"context_line":" *"},{"line_number":51,"context_line":" * @param name  Name of the target network namespace (as found under"},{"line_number":52,"context_line":" *              NETNS_RUN_DIR, e.g. /var/run/netns/\u003cname\u003e)."},{"line_number":53,"context_line":" *"},{"line_number":54,"context_line":" * @return On success, returns a file descriptor referring to the original"},{"line_number":55,"context_line":" *         network namespace. This descriptor must be passed to"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"fa0e61b1_09e3ce72","line":52,"updated":"2026-02-16 12:10:39.000000000","message":"Doxygen says `networking_sitnl.h:52: warning: Unsupported xml/html tag \u003cname\u003e found`","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":49,"context_line":" * that namespace via setns()."},{"line_number":50,"context_line":" *"},{"line_number":51,"context_line":" * @param name  Name of the target network namespace (as found under"},{"line_number":52,"context_line":" *              NETNS_RUN_DIR, e.g. /var/run/netns/\u003cname\u003e)."},{"line_number":53,"context_line":" *"},{"line_number":54,"context_line":" * @return On success, returns a file descriptor referring to the original"},{"line_number":55,"context_line":" *         network namespace. This descriptor must be passed to"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"54e1d744_317f8b7a","line":52,"in_reply_to":"fa0e61b1_09e3ce72","updated":"2026-02-26 09:48:44.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":95,"context_line":" *"},{"line_number":96,"context_line":" * @return Interface index on success, or 0 on error."},{"line_number":97,"context_line":" */"},{"line_number":98,"context_line":"int openvpn_if_nametoindex(const char *ifname, int netnsid);"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"/**"},{"line_number":101,"context_line":" * Move a network interface to a different network namespace."}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1e561559_8521c63f","line":98,"updated":"2026-02-16 12:10:39.000000000","message":"This is ALWAYS called with `get_or_create_netnsid_sitnl`, so just move all of that code inside and change the signature.","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":true,"context_lines":[{"line_number":95,"context_line":" *"},{"line_number":96,"context_line":" * @return Interface index on success, or 0 on error."},{"line_number":97,"context_line":" */"},{"line_number":98,"context_line":"int openvpn_if_nametoindex(const char *ifname, int netnsid);"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"/**"},{"line_number":101,"context_line":" * Move a network interface to a different network namespace."}],"source_content_type":"text/x-csrc","patch_set":1,"id":"dcdf2078_aa274ea0","line":98,"in_reply_to":"1e561559_8521c63f","updated":"2026-02-26 09:48:44.000000000","message":"I\u0027m not thrilled by the idea of having a function that does too much stuff so I only moved the call to get_or_create_netnsid_sitnl() inside.","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a75a01b6ba67e9d881aa540d9b246d7a905e7245","unresolved":false,"context_lines":[{"line_number":95,"context_line":" *"},{"line_number":96,"context_line":" * @return Interface index on success, or 0 on error."},{"line_number":97,"context_line":" */"},{"line_number":98,"context_line":"int openvpn_if_nametoindex(const char *ifname, int netnsid);"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"/**"},{"line_number":101,"context_line":" * Move a network interface to a different network namespace."}],"source_content_type":"text/x-csrc","patch_set":1,"id":"bb1d8a23_20125c14","line":98,"in_reply_to":"dcdf2078_aa274ea0","updated":"2026-02-26 11:37:24.000000000","message":"Done","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f6729a92d03dd41f057b943a3b80448fd2e434b0","unresolved":true,"context_lines":[{"line_number":110,"context_line":" * IFLA_NET_NS_FD attribute."},{"line_number":111,"context_line":" *"},{"line_number":112,"context_line":" * The target network namespace is expected to exist under NETNS_RUN_DIR"},{"line_number":113,"context_line":" * (/var/run/netns)."},{"line_number":114,"context_line":" *"},{"line_number":115,"context_line":" * @param iface  Name of the network interface to move."},{"line_number":116,"context_line":" * @param netns  Name of the target network namespace."}],"source_content_type":"text/x-csrc","patch_set":6,"id":"8c83021c_80e04de6","line":113,"updated":"2026-03-19 12:30:40.000000000","message":"`/run/netns`","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"43961da5ecb0370e4bea2329d2c96e50868f1045","unresolved":false,"context_lines":[{"line_number":110,"context_line":" * IFLA_NET_NS_FD attribute."},{"line_number":111,"context_line":" *"},{"line_number":112,"context_line":" * The target network namespace is expected to exist under NETNS_RUN_DIR"},{"line_number":113,"context_line":" * (/var/run/netns)."},{"line_number":114,"context_line":" *"},{"line_number":115,"context_line":" * @param iface  Name of the network interface to move."},{"line_number":116,"context_line":" * @param netns  Name of the target network namespace."}],"source_content_type":"text/x-csrc","patch_set":6,"id":"7944c4f7_347e1ae4","line":113,"in_reply_to":"8c83021c_80e04de6","updated":"2026-03-24 16:20:57.000000000","message":"This part has been removed, so no fix longer needed.","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"}],"src/openvpn/options.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"27618e66e3b42fee5dcff84d729fb42784440ef6","unresolved":true,"context_lines":[{"line_number":6473,"context_line":"        VERIFY_PERMISSION(OPT_P_GENERAL);"},{"line_number":6474,"context_line":"        options-\u003emtu_test \u003d true;"},{"line_number":6475,"context_line":"    }"},{"line_number":6476,"context_line":"#if defined(TARGET_LINUX)"},{"line_number":6477,"context_line":"    else if (streq(p[0], \"netns\") \u0026\u0026 p[1] \u0026\u0026 !p[2])"},{"line_number":6478,"context_line":"    {"},{"line_number":6479,"context_line":"#ifndef ENABLE_SITNL"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"cbd845cd_a862dec9","line":6476,"updated":"2026-02-16 12:10:39.000000000","message":"The documentation says it is a no-op on non-Linux, but as you implemented it is an error I think?","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"dd3d1acdbcc6f53d369a9394af42e1d8267c2b99","unresolved":false,"context_lines":[{"line_number":6473,"context_line":"        VERIFY_PERMISSION(OPT_P_GENERAL);"},{"line_number":6474,"context_line":"        options-\u003emtu_test \u003d true;"},{"line_number":6475,"context_line":"    }"},{"line_number":6476,"context_line":"#if defined(TARGET_LINUX)"},{"line_number":6477,"context_line":"    else if (streq(p[0], \"netns\") \u0026\u0026 p[1] \u0026\u0026 !p[2])"},{"line_number":6478,"context_line":"    {"},{"line_number":6479,"context_line":"#ifndef ENABLE_SITNL"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2b61fd19_da804455","line":6476,"in_reply_to":"cbd845cd_a862dec9","updated":"2026-02-26 09:48:44.000000000","message":"indeed","commit_id":"058966190410f31dc1a862144ae52b74018376f9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"8c4077fdd5ab95548386fc6b498582b7161e778a","unresolved":true,"context_lines":[{"line_number":6458,"context_line":"    else if (streq(p[0], \"netns\") \u0026\u0026 p[1] \u0026\u0026 !p[2])"},{"line_number":6459,"context_line":"    {"},{"line_number":6460,"context_line":"#ifndef ENABLE_SITNL"},{"line_number":6461,"context_line":"        msg(M_WARN, \"NOTE: --netns is supported only on Linux when SITNL is built-in\");"},{"line_number":6462,"context_line":"#endif"},{"line_number":6463,"context_line":"        VERIFY_PERMISSION(OPT_P_GENERAL);"},{"line_number":6464,"context_line":"        options-\u003enetns \u003d p[1];"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"8524456a_c0f153f1","line":6461,"updated":"2026-03-17 11:34:37.000000000","message":"I think \"when SITNL support is enabled\" would sound better","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"18075f1a50996834ebabba5ab322d7ba82ee807a","unresolved":false,"context_lines":[{"line_number":6458,"context_line":"    else if (streq(p[0], \"netns\") \u0026\u0026 p[1] \u0026\u0026 !p[2])"},{"line_number":6459,"context_line":"    {"},{"line_number":6460,"context_line":"#ifndef ENABLE_SITNL"},{"line_number":6461,"context_line":"        msg(M_WARN, \"NOTE: --netns is supported only on Linux when SITNL is built-in\");"},{"line_number":6462,"context_line":"#endif"},{"line_number":6463,"context_line":"        VERIFY_PERMISSION(OPT_P_GENERAL);"},{"line_number":6464,"context_line":"        options-\u003enetns \u003d p[1];"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"9bf0c4d3_06bedd67","line":6461,"in_reply_to":"8524456a_c0f153f1","updated":"2026-03-17 16:22:34.000000000","message":"I went for \"is supported only on Linux when compiled with SITNL\"","commit_id":"a6fd921763ec490c5941619eee450be2ee34de03"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"a1c9bb3add8636959503a0a7d7cef5622cdbeafb","unresolved":true,"context_lines":[{"line_number":6465,"context_line":"    else if (streq(p[0], \"netns\") \u0026\u0026 p[1] \u0026\u0026 !p[2])"},{"line_number":6466,"context_line":"    {"},{"line_number":6467,"context_line":"#ifndef ENABLE_SITNL"},{"line_number":6468,"context_line":"        msg(M_WARN, \"NOTE: --netns is supported only on Linux when compiled with SITNL\");"},{"line_number":6469,"context_line":"#endif"},{"line_number":6470,"context_line":"        VERIFY_PERMISSION(OPT_P_GENERAL);"},{"line_number":6471,"context_line":"        options-\u003enetns \u003d p[1];"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"6eeabe14_8951b5a9","line":6468,"updated":"2026-03-18 10:21:01.000000000","message":"I would go for \"SITNL support\"","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"8b758aa60da500e4d4ebbe7212af464fd2f4ca18","unresolved":false,"context_lines":[{"line_number":6465,"context_line":"    else if (streq(p[0], \"netns\") \u0026\u0026 p[1] \u0026\u0026 !p[2])"},{"line_number":6466,"context_line":"    {"},{"line_number":6467,"context_line":"#ifndef ENABLE_SITNL"},{"line_number":6468,"context_line":"        msg(M_WARN, \"NOTE: --netns is supported only on Linux when compiled with SITNL\");"},{"line_number":6469,"context_line":"#endif"},{"line_number":6470,"context_line":"        VERIFY_PERMISSION(OPT_P_GENERAL);"},{"line_number":6471,"context_line":"        options-\u003enetns \u003d p[1];"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"df3c47bd_c6afa6db","line":6468,"in_reply_to":"6eeabe14_8951b5a9","updated":"2026-03-18 10:39:58.000000000","message":"ordex disagreed on IRC. And he is the authority, so let\u0027s leave it.","commit_id":"f4b6052c7d72e32a7c86bff02dad080a3c734803"}],"src/openvpn/tun.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f6729a92d03dd41f057b943a3b80448fd2e434b0","unresolved":true,"context_lines":[{"line_number":2182,"context_line":"#if defined(TARGET_LINUX) \u0026\u0026 defined(ENABLE_SITNL)"},{"line_number":2183,"context_line":"        if (ctx-\u003enetns)"},{"line_number":2184,"context_line":"        {"},{"line_number":2185,"context_line":"            int ret \u003d net_iface_move_netns(ifr.ifr_name, ctx-\u003enetns);"},{"line_number":2186,"context_line":"            if (ret \u003c 0)"},{"line_number":2187,"context_line":"            {"},{"line_number":2188,"context_line":"                msg(M_WARN | M_ERRNO, \"Note: Cannot move dev %s to network namespace %s\", ifr.ifr_name, ctx-\u003enetns);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"2eb2828a_8a3cf902","line":2185,"updated":"2026-03-19 12:30:40.000000000","message":"One interesting problem I encountered is that the usual way of auto-naming tun devices doesn\u0027t really work with --netns. Since the device is created in a different namespace it can\u0027t know whether there is already a device with the same name in the target namespace.\n\nNot sure whether we can work around this? If not, maybe we should document this? Might be a niche use-case (outside of testing).","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"43961da5ecb0370e4bea2329d2c96e50868f1045","unresolved":false,"context_lines":[{"line_number":2182,"context_line":"#if defined(TARGET_LINUX) \u0026\u0026 defined(ENABLE_SITNL)"},{"line_number":2183,"context_line":"        if (ctx-\u003enetns)"},{"line_number":2184,"context_line":"        {"},{"line_number":2185,"context_line":"            int ret \u003d net_iface_move_netns(ifr.ifr_name, ctx-\u003enetns);"},{"line_number":2186,"context_line":"            if (ret \u003c 0)"},{"line_number":2187,"context_line":"            {"},{"line_number":2188,"context_line":"                msg(M_WARN | M_ERRNO, \"Note: Cannot move dev %s to network namespace %s\", ifr.ifr_name, ctx-\u003enetns);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"32fdbd8e_d4ad4523","line":2185,"in_reply_to":"2eb2828a_8a3cf902","updated":"2026-03-24 16:20:57.000000000","message":"Thanks for spotting this, that was indeed an intresting problem.\nWe got around this by creating the interface directly into the target namespace, so auto-naming will continue to work as usually.","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f6729a92d03dd41f057b943a3b80448fd2e434b0","unresolved":true,"context_lines":[{"line_number":2185,"context_line":"            int ret \u003d net_iface_move_netns(ifr.ifr_name, ctx-\u003enetns);"},{"line_number":2186,"context_line":"            if (ret \u003c 0)"},{"line_number":2187,"context_line":"            {"},{"line_number":2188,"context_line":"                msg(M_WARN | M_ERRNO, \"Note: Cannot move dev %s to network namespace %s\", ifr.ifr_name, ctx-\u003enetns);"},{"line_number":2189,"context_line":"            }"},{"line_number":2190,"context_line":"        }"},{"line_number":2191,"context_line":"#endif /* if defined (TARGET_LINUX) \u0026\u0026 defined(ENABLE_SITNL) */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"3b67e7d2_771ff340","line":2188,"updated":"2026-03-19 12:30:40.000000000","message":"I would go for M_ERR here. I would consider this a fatal error.","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"43961da5ecb0370e4bea2329d2c96e50868f1045","unresolved":false,"context_lines":[{"line_number":2185,"context_line":"            int ret \u003d net_iface_move_netns(ifr.ifr_name, ctx-\u003enetns);"},{"line_number":2186,"context_line":"            if (ret \u003c 0)"},{"line_number":2187,"context_line":"            {"},{"line_number":2188,"context_line":"                msg(M_WARN | M_ERRNO, \"Note: Cannot move dev %s to network namespace %s\", ifr.ifr_name, ctx-\u003enetns);"},{"line_number":2189,"context_line":"            }"},{"line_number":2190,"context_line":"        }"},{"line_number":2191,"context_line":"#endif /* if defined (TARGET_LINUX) \u0026\u0026 defined(ENABLE_SITNL) */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ad76eec1_abbaa8dc","line":2188,"in_reply_to":"3b67e7d2_771ff340","updated":"2026-03-24 16:20:57.000000000","message":"This part has been removed, so no fix longer needed.","commit_id":"960c8ce88f5efce5d4bb9aff4a8cd7a4b3f7d9d6"}]}
