)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000000,"name":"Leopold Schabel","display_name":"Leo","email":"leo@monogon.tech","username":"leo","avatars":[{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"9ff87db74edf87b584b2da702f34b96c10d86fb3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cf05d261_5f31f2c7","updated":"2024-07-12 17:45:30.000000000","message":"LGTM functionality-wise","commit_id":"d62d1d5273d360ee16f0b2193d4229c3f3cc57d8"}],"metropolis/node/core/network/neigh.go":[{"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":"1cecd0906fbf754d21d3ef48f726e7f0ff10e75a","unresolved":true,"context_lines":[{"line_number":82,"context_line":"\t\treturn fmt.Errorf(\"while listing configured IPs: %w\", err)"},{"line_number":83,"context_line":"\t}"},{"line_number":84,"context_line":"\tfor _, addr :\u003d range addrs {"},{"line_number":85,"context_line":"\t\tif addr.Flags\u0026unix.IFA_F_PERMANENT !\u003d 0 \u0026\u0026 addr.IP.IsGlobalUnicast() {"},{"line_number":86,"context_line":"\t\t\taddrIP, ok :\u003d netip.AddrFromSlice(addr.IP)"},{"line_number":87,"context_line":"\t\t\tif !ok {"},{"line_number":88,"context_line":"\t\t\t\tcontinue"}],"source_content_type":"text/x-go","patch_set":5,"id":"c2ad7e48_c9264789","line":85,"range":{"start_line":85,"start_character":53,"end_line":85,"end_character":68},"updated":"2024-07-11 15:29:05.000000000","message":"All other places where IsGlobalUnicast() is currently called, IsLinkLocalUnicast() is also checked. Is it intentionally not checked here?","commit_id":"d62d1d5273d360ee16f0b2193d4229c3f3cc57d8"},{"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":"68b8db237df082c4a27a93e1ba81bd0393f0385e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"\t\treturn fmt.Errorf(\"while listing configured IPs: %w\", err)"},{"line_number":83,"context_line":"\t}"},{"line_number":84,"context_line":"\tfor _, addr :\u003d range addrs {"},{"line_number":85,"context_line":"\t\tif addr.Flags\u0026unix.IFA_F_PERMANENT !\u003d 0 \u0026\u0026 addr.IP.IsGlobalUnicast() {"},{"line_number":86,"context_line":"\t\t\taddrIP, ok :\u003d netip.AddrFromSlice(addr.IP)"},{"line_number":87,"context_line":"\t\t\tif !ok {"},{"line_number":88,"context_line":"\t\t\t\tcontinue"}],"source_content_type":"text/x-go","patch_set":5,"id":"39aef56f_e1a59670","line":85,"range":{"start_line":85,"start_character":53,"end_line":85,"end_character":68},"in_reply_to":"c2ad7e48_c9264789","updated":"2024-07-15 10:48:34.000000000","message":"Done","commit_id":"d62d1d5273d360ee16f0b2193d4229c3f3cc57d8"},{"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":"447458f70998f925e675d7b24d7192b26539acc2","unresolved":true,"context_lines":[{"line_number":102,"context_line":"// A DHCPv4 callback function which announces acquired IPv4 addresses via"},{"line_number":103,"context_line":"// ARP announcement."},{"line_number":104,"context_line":"func arpAnnounceCB(l netlink.Link) dhcp4c.LeaseCallback {"},{"line_number":105,"context_line":"\treturn func(old, new *dhcp4c.Lease) error {"},{"line_number":106,"context_line":"\t\tvar oldIP net.IP"},{"line_number":107,"context_line":"\t\tvar newIP net.IP"},{"line_number":108,"context_line":"\t\tif old !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":7,"id":"5f25852f_29fac1cf","line":105,"updated":"2024-07-15 12:26:01.000000000","message":"This now needs to be rebased, as the old parameter was removed from LeaseCallback. For example, you could keep the oldIP in a variable in the outer function.","commit_id":"04aa6d157db0555948bbf88fa0dad9fd3f0104aa"},{"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":"2c1e343bd59fd5eedc415683d8f51eb3899dcbd1","unresolved":false,"context_lines":[{"line_number":102,"context_line":"// A DHCPv4 callback function which announces acquired IPv4 addresses via"},{"line_number":103,"context_line":"// ARP announcement."},{"line_number":104,"context_line":"func arpAnnounceCB(l netlink.Link) dhcp4c.LeaseCallback {"},{"line_number":105,"context_line":"\treturn func(old, new *dhcp4c.Lease) error {"},{"line_number":106,"context_line":"\t\tvar oldIP net.IP"},{"line_number":107,"context_line":"\t\tvar newIP net.IP"},{"line_number":108,"context_line":"\t\tif old !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":7,"id":"0a65292b_f3087e11","line":105,"in_reply_to":"5f25852f_29fac1cf","updated":"2024-07-15 12:37:01.000000000","message":"Done","commit_id":"04aa6d157db0555948bbf88fa0dad9fd3f0104aa"}],"metropolis/node/core/network/static.go":[{"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":"1cecd0906fbf754d21d3ef48f726e7f0ff10e75a","unresolved":true,"context_lines":[{"line_number":201,"context_line":"\t\treturn fmt.Errorf(\"failed creating DHCPv4 client: %w\", err)"},{"line_number":202,"context_line":"\t}"},{"line_number":203,"context_line":"\tc.RequestedOptions \u003d []dhcpv4.OptionCode{dhcpv4.OptionRouter, dhcpv4.OptionDomainNameServer, dhcpv4.OptionClasslessStaticRoute}"},{"line_number":204,"context_line":"\tc.LeaseCallback \u003d dhcpcb.Compose(arpAnnounceCB(lnk), dhcpcb.ManageIP(lnk), dhcpcb.ManageRoutes(lnk), s.statusCallback)"},{"line_number":205,"context_line":"\treturn supervisor.Run(ctx, \"dhcp-\"+lnk.Attrs().Name, c.Run)"},{"line_number":206,"context_line":"}"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-go","patch_set":5,"id":"1b9159cb_c3b338bf","line":204,"range":{"start_line":204,"start_character":34,"end_line":204,"end_character":74},"updated":"2024-07-11 15:29:05.000000000","message":"In main.go, the order of ManageIP and arpAnnounceCB is swapped compared to here. This should probably be consistent.","commit_id":"d62d1d5273d360ee16f0b2193d4229c3f3cc57d8"},{"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":"68b8db237df082c4a27a93e1ba81bd0393f0385e","unresolved":false,"context_lines":[{"line_number":201,"context_line":"\t\treturn fmt.Errorf(\"failed creating DHCPv4 client: %w\", err)"},{"line_number":202,"context_line":"\t}"},{"line_number":203,"context_line":"\tc.RequestedOptions \u003d []dhcpv4.OptionCode{dhcpv4.OptionRouter, dhcpv4.OptionDomainNameServer, dhcpv4.OptionClasslessStaticRoute}"},{"line_number":204,"context_line":"\tc.LeaseCallback \u003d dhcpcb.Compose(arpAnnounceCB(lnk), dhcpcb.ManageIP(lnk), dhcpcb.ManageRoutes(lnk), s.statusCallback)"},{"line_number":205,"context_line":"\treturn supervisor.Run(ctx, \"dhcp-\"+lnk.Attrs().Name, c.Run)"},{"line_number":206,"context_line":"}"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-go","patch_set":5,"id":"2200ed88_013f01c4","line":204,"range":{"start_line":204,"start_character":34,"end_line":204,"end_character":74},"in_reply_to":"1b9159cb_c3b338bf","updated":"2024-07-15 10:48:34.000000000","message":"Done","commit_id":"d62d1d5273d360ee16f0b2193d4229c3f3cc57d8"}]}
