)]}'
{"metropolis/test/lacp/lacp_test.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2a148b3d0a3647c77e2a6b369891ef0fc7ba6b2c","unresolved":true,"context_lines":[{"line_number":16,"context_line":"\t\"golang.org/x/sys/unix\""},{"line_number":17,"context_line":")"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"func createVethPair(t *testing.T, name string) (*netlink.Veth, *netlink.Veth) {"},{"line_number":20,"context_line":"\tt.Helper()"},{"line_number":21,"context_line":"\tvethLink :\u003d netlink.Veth{"},{"line_number":22,"context_line":"\t\tLinkAttrs: netlink.LinkAttrs{"}],"source_content_type":"text/x-go","patch_set":1,"id":"07443b15_b28b1feb","line":19,"range":{"start_line":19,"start_character":5,"end_line":19,"end_character":19},"updated":"2024-05-02 09:46:16.000000000","message":"Describe what \u0027vethPair\u0027 is.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0bbafd34caf81c60f0c11eb9e5f4a222ee2c6c61","unresolved":true,"context_lines":[{"line_number":16,"context_line":"\t\"golang.org/x/sys/unix\""},{"line_number":17,"context_line":")"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"func createVethPair(t *testing.T, name string) (*netlink.Veth, *netlink.Veth) {"},{"line_number":20,"context_line":"\tt.Helper()"},{"line_number":21,"context_line":"\tvethLink :\u003d netlink.Veth{"},{"line_number":22,"context_line":"\t\tLinkAttrs: netlink.LinkAttrs{"}],"source_content_type":"text/x-go","patch_set":1,"id":"83419a6d_2f829993","line":19,"range":{"start_line":19,"start_character":5,"end_line":19,"end_character":19},"in_reply_to":"07443b15_b28b1feb","updated":"2024-05-02 10:51:06.000000000","message":"Well, it is a Linux veth interface pair (https://man7.org/linux/man-pages/man4/veth.4.html).","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8c891e7c5d50b95f0a590963ee31f21181aff80f","unresolved":true,"context_lines":[{"line_number":16,"context_line":"\t\"golang.org/x/sys/unix\""},{"line_number":17,"context_line":")"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"func createVethPair(t *testing.T, name string) (*netlink.Veth, *netlink.Veth) {"},{"line_number":20,"context_line":"\tt.Helper()"},{"line_number":21,"context_line":"\tvethLink :\u003d netlink.Veth{"},{"line_number":22,"context_line":"\t\tLinkAttrs: netlink.LinkAttrs{"}],"source_content_type":"text/x-go","patch_set":1,"id":"b47dfdf1_fdabba4f","line":19,"range":{"start_line":19,"start_character":5,"end_line":19,"end_character":19},"in_reply_to":"83419a6d_2f829993","updated":"2024-05-08 09:03:56.000000000","message":"In a comment :).","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3a3d70f976897134fbed0c172f5f8c3fe631f7da","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\t\"golang.org/x/sys/unix\""},{"line_number":17,"context_line":")"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"func createVethPair(t *testing.T, name string) (*netlink.Veth, *netlink.Veth) {"},{"line_number":20,"context_line":"\tt.Helper()"},{"line_number":21,"context_line":"\tvethLink :\u003d netlink.Veth{"},{"line_number":22,"context_line":"\t\tLinkAttrs: netlink.LinkAttrs{"}],"source_content_type":"text/x-go","patch_set":1,"id":"ff8d5db2_f45f421e","line":19,"range":{"start_line":19,"start_character":5,"end_line":19,"end_character":19},"in_reply_to":"b47dfdf1_fdabba4f","updated":"2024-05-08 14:59:19.000000000","message":"Done","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2a148b3d0a3647c77e2a6b369891ef0fc7ba6b2c","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\treturn \u0026vethLink, vethLinkB.(*netlink.Veth)"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"func setupNetem(t *testing.T, link netlink.Link, conf netlink.NetemQdiscAttrs) *netlink.Netem {"},{"line_number":41,"context_line":"\tt.Helper()"},{"line_number":42,"context_line":"\th :\u003d fnv.New32a()"},{"line_number":43,"context_line":"\th.Write([]byte(link.Attrs().Name))"}],"source_content_type":"text/x-go","patch_set":1,"id":"c8b4ef1d_44fd3751","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":15},"updated":"2024-05-02 09:46:16.000000000","message":"Describe what \u0027netem\u0027 is.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3a3d70f976897134fbed0c172f5f8c3fe631f7da","unresolved":false,"context_lines":[{"line_number":37,"context_line":"\treturn \u0026vethLink, vethLinkB.(*netlink.Veth)"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"func setupNetem(t *testing.T, link netlink.Link, conf netlink.NetemQdiscAttrs) *netlink.Netem {"},{"line_number":41,"context_line":"\tt.Helper()"},{"line_number":42,"context_line":"\th :\u003d fnv.New32a()"},{"line_number":43,"context_line":"\th.Write([]byte(link.Attrs().Name))"}],"source_content_type":"text/x-go","patch_set":1,"id":"39eedd77_e3f78b47","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":15},"in_reply_to":"01bb4667_af94f3af","updated":"2024-05-08 14:59:19.000000000","message":"Done","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8c891e7c5d50b95f0a590963ee31f21181aff80f","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\treturn \u0026vethLink, vethLinkB.(*netlink.Veth)"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"func setupNetem(t *testing.T, link netlink.Link, conf netlink.NetemQdiscAttrs) *netlink.Netem {"},{"line_number":41,"context_line":"\tt.Helper()"},{"line_number":42,"context_line":"\th :\u003d fnv.New32a()"},{"line_number":43,"context_line":"\th.Write([]byte(link.Attrs().Name))"}],"source_content_type":"text/x-go","patch_set":1,"id":"01bb4667_af94f3af","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":15},"in_reply_to":"08f7a2e6_73383f68","updated":"2024-05-08 09:03:56.000000000","message":"Also in a comment. And since this is less common than a veth (pair) maybe do a quick recap of what it is and how we use it here.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0bbafd34caf81c60f0c11eb9e5f4a222ee2c6c61","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\treturn \u0026vethLink, vethLinkB.(*netlink.Veth)"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"func setupNetem(t *testing.T, link netlink.Link, conf netlink.NetemQdiscAttrs) *netlink.Netem {"},{"line_number":41,"context_line":"\tt.Helper()"},{"line_number":42,"context_line":"\th :\u003d fnv.New32a()"},{"line_number":43,"context_line":"\th.Write([]byte(link.Attrs().Name))"}],"source_content_type":"text/x-go","patch_set":1,"id":"08f7a2e6_73383f68","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":15},"in_reply_to":"c8b4ef1d_44fd3751","updated":"2024-05-02 10:51:06.000000000","message":"https://man7.org/linux/man-pages/man8/tc-netem.8.html","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000038,"name":"Jan Schär","display_name":"Jan","email":"jan@monogon.tech","username":"jan","avatars":[{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f680b30d87d551aba012e890667d061f5e81fc16","unresolved":true,"context_lines":[{"line_number":73,"context_line":"\tbondLink.MinLinks \u003d 1"},{"line_number":74,"context_line":"\tbondLink.AdSelect \u003d netlink.BOND_AD_SELECT_BANDWIDTH"},{"line_number":75,"context_line":"\tif err :\u003d netlink.LinkAdd(bondLink); err !\u003d nil {"},{"line_number":76,"context_line":"\t\tt.Fatalf(\"while creating veth pair: %v\", err)"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\tfor _, l :\u003d range links {"},{"line_number":79,"context_line":"\t\tif err :\u003d netlink.LinkSetBondSlave(l, bondLink); err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"cbd9e98e_87ff675a","line":76,"updated":"2024-05-02 11:27:34.000000000","message":"The error message should be adjusted.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"015ee5420acd82439f86beea4285bcc30eb359a0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"\tbondLink.MinLinks \u003d 1"},{"line_number":74,"context_line":"\tbondLink.AdSelect \u003d netlink.BOND_AD_SELECT_BANDWIDTH"},{"line_number":75,"context_line":"\tif err :\u003d netlink.LinkAdd(bondLink); err !\u003d nil {"},{"line_number":76,"context_line":"\t\tt.Fatalf(\"while creating veth pair: %v\", err)"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\tfor _, l :\u003d range links {"},{"line_number":79,"context_line":"\t\tif err :\u003d netlink.LinkSetBondSlave(l, bondLink); err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"ade2b496_0bef17e8","line":76,"in_reply_to":"cbd9e98e_87ff675a","updated":"2024-05-02 15:43:30.000000000","message":"Done","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"}],"third_party/linux/external/lacp_fix.patch":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2a148b3d0a3647c77e2a6b369891ef0fc7ba6b2c","unresolved":true,"context_lines":[{"line_number":20,"context_line":" \treturn active;"},{"line_number":21,"context_line":" }"},{"line_number":22,"context_line":" "},{"line_number":23,"context_line":"+static int __agg_enabled_ports(struct aggregator *agg) {"},{"line_number":24,"context_line":"+\tstruct port *port;"},{"line_number":25,"context_line":"+\tint en_count \u003d 0;"},{"line_number":26,"context_line":"+"}],"source_content_type":"text/x-diff","patch_set":1,"id":"c350ecff_c932c32c","line":23,"range":{"start_line":23,"start_character":12,"end_line":23,"end_character":31},"updated":"2024-05-02 09:46:16.000000000","message":"Can you explain the difference between `__agg_enabled_ports` and `__agg_active_ports`?","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8c891e7c5d50b95f0a590963ee31f21181aff80f","unresolved":true,"context_lines":[{"line_number":20,"context_line":" \treturn active;"},{"line_number":21,"context_line":" }"},{"line_number":22,"context_line":" "},{"line_number":23,"context_line":"+static int __agg_enabled_ports(struct aggregator *agg) {"},{"line_number":24,"context_line":"+\tstruct port *port;"},{"line_number":25,"context_line":"+\tint en_count \u003d 0;"},{"line_number":26,"context_line":"+"}],"source_content_type":"text/x-diff","patch_set":1,"id":"41c9570d_12ec6066","line":23,"range":{"start_line":23,"start_character":12,"end_line":23,"end_character":31},"in_reply_to":"10dfa077_3c0c6a33","updated":"2024-05-08 09:03:56.000000000","message":"This merits being a comment on the __agg_enabled_ports function.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3a3d70f976897134fbed0c172f5f8c3fe631f7da","unresolved":false,"context_lines":[{"line_number":20,"context_line":" \treturn active;"},{"line_number":21,"context_line":" }"},{"line_number":22,"context_line":" "},{"line_number":23,"context_line":"+static int __agg_enabled_ports(struct aggregator *agg) {"},{"line_number":24,"context_line":"+\tstruct port *port;"},{"line_number":25,"context_line":"+\tint en_count \u003d 0;"},{"line_number":26,"context_line":"+"}],"source_content_type":"text/x-diff","patch_set":1,"id":"ec87b424_ff4fb2ab","line":23,"range":{"start_line":23,"start_character":12,"end_line":23,"end_character":31},"in_reply_to":"41c9570d_12ec6066","updated":"2024-05-08 14:59:19.000000000","message":"Done","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0bbafd34caf81c60f0c11eb9e5f4a222ee2c6c61","unresolved":true,"context_lines":[{"line_number":20,"context_line":" \treturn active;"},{"line_number":21,"context_line":" }"},{"line_number":22,"context_line":" "},{"line_number":23,"context_line":"+static int __agg_enabled_ports(struct aggregator *agg) {"},{"line_number":24,"context_line":"+\tstruct port *port;"},{"line_number":25,"context_line":"+\tint en_count \u003d 0;"},{"line_number":26,"context_line":"+"}],"source_content_type":"text/x-diff","patch_set":1,"id":"10dfa077_3c0c6a33","line":23,"range":{"start_line":23,"start_character":12,"end_line":23,"end_character":31},"in_reply_to":"c350ecff_c932c32c","updated":"2024-05-02 10:51:06.000000000","message":"`__agg_enabled_ports` counts the number of ports which are currently in aggregation, `__agg_active_ports` the number of ports which have carrier. The naming sucks, but if I started renaming everything that was badly-named in this driver this patch would be 5x larger.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2a148b3d0a3647c77e2a6b369891ef0fc7ba6b2c","unresolved":true,"context_lines":[{"line_number":42,"context_line":" \t\t}"},{"line_number":43,"context_line":" \t}"},{"line_number":44,"context_line":"+\t// Update carrier state"},{"line_number":45,"context_line":"+\tbond_3ad_set_carrier(__get_bond_by_port(port));"},{"line_number":46,"context_line":" }"},{"line_number":47,"context_line":" "},{"line_number":48,"context_line":" /**"}],"source_content_type":"text/x-diff","patch_set":1,"id":"c3593b78_ac553999","line":45,"range":{"start_line":45,"start_character":2,"end_line":45,"end_character":49},"updated":"2024-05-02 09:46:16.000000000","message":"Why call this here?","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8c891e7c5d50b95f0a590963ee31f21181aff80f","unresolved":false,"context_lines":[{"line_number":42,"context_line":" \t\t}"},{"line_number":43,"context_line":" \t}"},{"line_number":44,"context_line":"+\t// Update carrier state"},{"line_number":45,"context_line":"+\tbond_3ad_set_carrier(__get_bond_by_port(port));"},{"line_number":46,"context_line":" }"},{"line_number":47,"context_line":" "},{"line_number":48,"context_line":" /**"}],"source_content_type":"text/x-diff","patch_set":1,"id":"47cf7853_1587fe51","line":45,"range":{"start_line":45,"start_character":2,"end_line":45,"end_character":49},"in_reply_to":"14f7f613_79351074","updated":"2024-05-08 09:03:56.000000000","message":"Acknowledged (but also consider `// Update carrier state as we might have enabled/disable ports`)","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0bbafd34caf81c60f0c11eb9e5f4a222ee2c6c61","unresolved":true,"context_lines":[{"line_number":42,"context_line":" \t\t}"},{"line_number":43,"context_line":" \t}"},{"line_number":44,"context_line":"+\t// Update carrier state"},{"line_number":45,"context_line":"+\tbond_3ad_set_carrier(__get_bond_by_port(port));"},{"line_number":46,"context_line":" }"},{"line_number":47,"context_line":" "},{"line_number":48,"context_line":" /**"}],"source_content_type":"text/x-diff","patch_set":1,"id":"14f7f613_79351074","line":45,"range":{"start_line":45,"start_character":2,"end_line":45,"end_character":49},"in_reply_to":"c3593b78_ac553999","updated":"2024-05-02 10:51:06.000000000","message":"We enable/disable ports in this function, thus the derived carrier state might change. As enabling/disabling ports previously did not impact the carrier state of the bond interface, this needs to be added here.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"2a148b3d0a3647c77e2a6b369891ef0fc7ba6b2c","unresolved":true,"context_lines":[{"line_number":50,"context_line":" \t\t*update_slave_arr \u003d true;"},{"line_number":51,"context_line":" \t}"},{"line_number":52,"context_line":" "},{"line_number":53,"context_line":"-\t/* if the selected aggregator is of join individuals"},{"line_number":54,"context_line":"-\t * (partner_system is NULL), enable their ports"},{"line_number":55,"context_line":"-\t */"},{"line_number":56,"context_line":"-\tactive \u003d __get_active_agg(origin);"},{"line_number":57,"context_line":"-"},{"line_number":58,"context_line":"-\tif (active) {"},{"line_number":59,"context_line":"-\t\tif (!__agg_has_partner(active)) {"},{"line_number":60,"context_line":"-\t\t\tfor (port \u003d active-\u003elag_ports; port;"},{"line_number":61,"context_line":"-\t\t\t     port \u003d port-\u003enext_port_in_aggregator) {"},{"line_number":62,"context_line":"-\t\t\t\t__enable_port(port);"},{"line_number":63,"context_line":"-\t\t\t}"},{"line_number":64,"context_line":"-\t\t\t*update_slave_arr \u003d true;"},{"line_number":65,"context_line":"-\t\t}"},{"line_number":66,"context_line":"-\t}"},{"line_number":67,"context_line":"-"},{"line_number":68,"context_line":" \trcu_read_unlock();"},{"line_number":69,"context_line":" "}],"source_content_type":"text/x-diff","patch_set":1,"id":"55cfd708_0a609469","line":66,"range":{"start_line":53,"start_character":0,"end_line":66,"end_character":3},"updated":"2024-05-02 09:46:16.000000000","message":"Why do we need to remove this?","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0bbafd34caf81c60f0c11eb9e5f4a222ee2c6c61","unresolved":true,"context_lines":[{"line_number":50,"context_line":" \t\t*update_slave_arr \u003d true;"},{"line_number":51,"context_line":" \t}"},{"line_number":52,"context_line":" "},{"line_number":53,"context_line":"-\t/* if the selected aggregator is of join individuals"},{"line_number":54,"context_line":"-\t * (partner_system is NULL), enable their ports"},{"line_number":55,"context_line":"-\t */"},{"line_number":56,"context_line":"-\tactive \u003d __get_active_agg(origin);"},{"line_number":57,"context_line":"-"},{"line_number":58,"context_line":"-\tif (active) {"},{"line_number":59,"context_line":"-\t\tif (!__agg_has_partner(active)) {"},{"line_number":60,"context_line":"-\t\t\tfor (port \u003d active-\u003elag_ports; port;"},{"line_number":61,"context_line":"-\t\t\t     port \u003d port-\u003enext_port_in_aggregator) {"},{"line_number":62,"context_line":"-\t\t\t\t__enable_port(port);"},{"line_number":63,"context_line":"-\t\t\t}"},{"line_number":64,"context_line":"-\t\t\t*update_slave_arr \u003d true;"},{"line_number":65,"context_line":"-\t\t}"},{"line_number":66,"context_line":"-\t}"},{"line_number":67,"context_line":"-"},{"line_number":68,"context_line":" \trcu_read_unlock();"},{"line_number":69,"context_line":" "}],"source_content_type":"text/x-diff","patch_set":1,"id":"9a728fe1_e510324c","line":66,"range":{"start_line":53,"start_character":0,"end_line":66,"end_character":3},"in_reply_to":"55cfd708_0a609469","updated":"2024-05-02 10:51:06.000000000","message":"This is AFAIK nonstandard behavior, it causes ports to emit traffic without even having a LACP partner.","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"8c891e7c5d50b95f0a590963ee31f21181aff80f","unresolved":false,"context_lines":[{"line_number":50,"context_line":" \t\t*update_slave_arr \u003d true;"},{"line_number":51,"context_line":" \t}"},{"line_number":52,"context_line":" "},{"line_number":53,"context_line":"-\t/* if the selected aggregator is of join individuals"},{"line_number":54,"context_line":"-\t * (partner_system is NULL), enable their ports"},{"line_number":55,"context_line":"-\t */"},{"line_number":56,"context_line":"-\tactive \u003d __get_active_agg(origin);"},{"line_number":57,"context_line":"-"},{"line_number":58,"context_line":"-\tif (active) {"},{"line_number":59,"context_line":"-\t\tif (!__agg_has_partner(active)) {"},{"line_number":60,"context_line":"-\t\t\tfor (port \u003d active-\u003elag_ports; port;"},{"line_number":61,"context_line":"-\t\t\t     port \u003d port-\u003enext_port_in_aggregator) {"},{"line_number":62,"context_line":"-\t\t\t\t__enable_port(port);"},{"line_number":63,"context_line":"-\t\t\t}"},{"line_number":64,"context_line":"-\t\t\t*update_slave_arr \u003d true;"},{"line_number":65,"context_line":"-\t\t}"},{"line_number":66,"context_line":"-\t}"},{"line_number":67,"context_line":"-"},{"line_number":68,"context_line":" \trcu_read_unlock();"},{"line_number":69,"context_line":" "}],"source_content_type":"text/x-diff","patch_set":1,"id":"f7f9015e_1f580c7d","line":66,"range":{"start_line":53,"start_character":0,"end_line":66,"end_character":3},"in_reply_to":"9a728fe1_e510324c","updated":"2024-05-08 09:03:56.000000000","message":"Acknowledged","commit_id":"2ec0580eb2a9915936ac9e6bbe806862af6d0b29"}]}
