)]}'
{"src/openvpn/dco_linux.c":[{"author":{"_account_id":1000007,"name":"Antonio Quartulli","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"1d73bd8cfd1d94bdfa9c9698e32b6add40e26d90","unresolved":true,"context_lines":[{"line_number":513,"context_line":"        msg(D_DCO_DEBUG, \"Cannot create DCO interface %s: %d\", dev, ret);"},{"line_number":514,"context_line":"        return ret;"},{"line_number":515,"context_line":"    }"},{"line_number":516,"context_line":"    else if (ret \u003d\u003d -EEXIST)"},{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a605f1be_6b97fa8b","line":516,"updated":"2026-09-03 14:00:11.000000000","message":"else not needed. Previous branch has a return (easier on my brain too)","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000007,"name":"Antonio Quartulli","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"01132e978d17979775fc83eafb3b6e87aa57209d","unresolved":true,"context_lines":[{"line_number":513,"context_line":"        msg(D_DCO_DEBUG, \"Cannot create DCO interface %s: %d\", dev, ret);"},{"line_number":514,"context_line":"        return ret;"},{"line_number":515,"context_line":"    }"},{"line_number":516,"context_line":"    else if (ret \u003d\u003d -EEXIST)"},{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"68846f49_b680e078","line":516,"in_reply_to":"0d2aac5f_5d49223f","updated":"2026-09-03 15:42:32.000000000","message":"I didn\u0027t mean to remove the else branch, but only the keyword \"else\", because the if branch ends with a return.","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"24a3b8308990992cf41dd4a41f8855f4bc5844aa","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        msg(D_DCO_DEBUG, \"Cannot create DCO interface %s: %d\", dev, ret);"},{"line_number":514,"context_line":"        return ret;"},{"line_number":515,"context_line":"    }"},{"line_number":516,"context_line":"    else if (ret \u003d\u003d -EEXIST)"},{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3609d16f_f769a7df","line":516,"in_reply_to":"68846f49_b680e078","updated":"2026-09-03 15:48:39.000000000","message":"Ah got it, sorry for the misunderstanding.","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"4ae7aa839ab5874130701b4bde6e0b45c8a54894","unresolved":true,"context_lines":[{"line_number":513,"context_line":"        msg(D_DCO_DEBUG, \"Cannot create DCO interface %s: %d\", dev, ret);"},{"line_number":514,"context_line":"        return ret;"},{"line_number":515,"context_line":"    }"},{"line_number":516,"context_line":"    else if (ret \u003d\u003d -EEXIST)"},{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"0d2aac5f_5d49223f","line":516,"in_reply_to":"a605f1be_6b97fa8b","updated":"2026-09-03 15:07:59.000000000","message":"The else branch is actually needed because ret could also be 0 so this portion of the code has to execute only when there\u0027s a pre-existing inteface available. If we remove the else branch and execute unconditionally we\u0027d query the just created interface, which should work but is not really useful.","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000007,"name":"Antonio Quartulli","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"1d73bd8cfd1d94bdfa9c9698e32b6add40e26d90","unresolved":true,"context_lines":[{"line_number":515,"context_line":"    }"},{"line_number":516,"context_line":"    else if (ret \u003d\u003d -EEXIST)"},{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"},{"line_number":520,"context_line":"        int mode_ret \u003d net_iface_ovpn_mode(ctx, dev, \u0026mode);"},{"line_number":521,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"30d0fd8d_7f0291c2","line":518,"updated":"2026-09-03 14:00:11.000000000","message":"move this only inside the if-block where we use it","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"4ae7aa839ab5874130701b4bde6e0b45c8a54894","unresolved":false,"context_lines":[{"line_number":515,"context_line":"    }"},{"line_number":516,"context_line":"    else if (ret \u003d\u003d -EEXIST)"},{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"},{"line_number":520,"context_line":"        int mode_ret \u003d net_iface_ovpn_mode(ctx, dev, \u0026mode);"},{"line_number":521,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3e85b0cf_71e2304b","line":518,"in_reply_to":"30d0fd8d_7f0291c2","updated":"2026-09-03 15:07:59.000000000","message":"Acknowledged","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000007,"name":"Antonio Quartulli","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"2776685b6a6c9333b2cd27b5d895cc2fd7087cdc","unresolved":true,"context_lines":[{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"},{"line_number":520,"context_line":"        int mode_ret \u003d net_iface_ovpn_mode(ctx, dev, \u0026mode);"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        if (mode_ret \u003c 0)"},{"line_number":523,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7e75250d_200e5607","line":520,"updated":"2026-09-03 14:10:23.000000000","message":"how about moving the (re)definition of `enum ovpn_mode` (and its ifla friends) to networking_sitnl.h and make this new function use it, instead of uint8_t?\n\nAs discussed on IRC, IFLA attributes are a networking thing, rather than truly DCO specific (although it all overlaps).","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"},{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"4ae7aa839ab5874130701b4bde6e0b45c8a54894","unresolved":false,"context_lines":[{"line_number":517,"context_line":"    {"},{"line_number":518,"context_line":"        const char *expected \u003d tt-\u003edco.ifmode \u003d\u003d OVPN_MODE_MP ? \"server\" : \"p2p\";"},{"line_number":519,"context_line":"        uint8_t mode;"},{"line_number":520,"context_line":"        int mode_ret \u003d net_iface_ovpn_mode(ctx, dev, \u0026mode);"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        if (mode_ret \u003c 0)"},{"line_number":523,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b853ea66_9f7911b6","line":520,"in_reply_to":"7e75250d_200e5607","updated":"2026-09-03 15:07:59.000000000","message":"Acknowledged","commit_id":"2902b94906e9b21e9288d9e43b24a3c6b5775e17"}]}
