)]}'
{"/PATCHSET_LEVEL":[{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1a61cf2e_6929bcc6","updated":"2023-03-07 19:36:05.000000000","message":"Mostly LGTM. Added some comment suggestions to make the next reader\u0027s life a bit easier.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"}],"net/dump/netdump.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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":32,"context_line":"// a net.proto.Net structure. This is currently only expected to work for"},{"line_number":33,"context_line":"// systems which do not use a dynamic routing protocol to establish basic"},{"line_number":34,"context_line":"// internet connectivity."},{"line_number":35,"context_line":"func Dump() (*netapi.Net, []error, error) {"},{"line_number":36,"context_line":"\tvar n netapi.Net"},{"line_number":37,"context_line":"\tvar warnings []error"},{"line_number":38,"context_line":"\tlinks, err :\u003d netlink.LinkList()"}],"source_content_type":"text/x-go","patch_set":1,"id":"8918dda1_501772d1","line":35,"range":{"start_line":35,"start_character":26,"end_line":35,"end_character":43},"updated":"2023-03-07 19:36:05.000000000","message":"Please mention in the godoc that these are warnings and a fatal error, if any.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":32,"context_line":"// a net.proto.Net structure. This is currently only expected to work for"},{"line_number":33,"context_line":"// systems which do not use a dynamic routing protocol to establish basic"},{"line_number":34,"context_line":"// internet connectivity."},{"line_number":35,"context_line":"func Dump() (*netapi.Net, []error, error) {"},{"line_number":36,"context_line":"\tvar n netapi.Net"},{"line_number":37,"context_line":"\tvar warnings []error"},{"line_number":38,"context_line":"\tlinks, err :\u003d netlink.LinkList()"}],"source_content_type":"text/x-go","patch_set":1,"id":"41bd85d3_957729c4","line":35,"range":{"start_line":35,"start_character":26,"end_line":35,"end_character":43},"in_reply_to":"8918dda1_501772d1","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":47,"context_line":"\tifNRevDeps :\u003d make(map[int]int)"},{"line_number":48,"context_line":"\tfor _, link :\u003d range links {"},{"line_number":49,"context_line":"\t\tlinkAttrs :\u003d link.Attrs()"},{"line_number":50,"context_line":"\t\t// Ignore loopback interface, will always get created"},{"line_number":51,"context_line":"\t\tif linkAttrs.EncapType \u003d\u003d \"loopback\" {"},{"line_number":52,"context_line":"\t\t\tcontinue"},{"line_number":53,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"5cbc2c4f_382455f5","line":50,"range":{"start_line":50,"start_character":5,"end_line":50,"end_character":55},"updated":"2023-03-07 19:36:05.000000000","message":"```suggestion\n\t\t// Ignore loopback interfaces. The default one will always be\n\t\t// created, and we don\u0027t have support for additional loopbacks.\n```","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\tifNRevDeps :\u003d make(map[int]int)"},{"line_number":48,"context_line":"\tfor _, link :\u003d range links {"},{"line_number":49,"context_line":"\t\tlinkAttrs :\u003d link.Attrs()"},{"line_number":50,"context_line":"\t\t// Ignore loopback interface, will always get created"},{"line_number":51,"context_line":"\t\tif linkAttrs.EncapType \u003d\u003d \"loopback\" {"},{"line_number":52,"context_line":"\t\t\tcontinue"},{"line_number":53,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"901a6d22_319134a6","line":50,"range":{"start_line":50,"start_character":5,"end_line":50,"end_character":55},"in_reply_to":"5cbc2c4f_382455f5","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":51,"context_line":"\t\tif linkAttrs.EncapType \u003d\u003d \"loopback\" {"},{"line_number":52,"context_line":"\t\t\tcontinue"},{"line_number":53,"context_line":"\t\t}"},{"line_number":54,"context_line":"\t\tvar iface netapi.Interface"},{"line_number":55,"context_line":"\t\tswitch l :\u003d link.(type) {"},{"line_number":56,"context_line":"\t\tcase *netlink.Device:"},{"line_number":57,"context_line":"\t\t\tmac :\u003d link.Attrs().PermHardwareAddr"}],"source_content_type":"text/x-go","patch_set":1,"id":"d1f5afd1_f81a4177","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":28},"updated":"2023-03-07 19:36:05.000000000","message":"```suggestion\n\t\t// Gather interface-type-specific data into a netapi interface.\n\t\tvar iface netapi.Interface\n```","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":51,"context_line":"\t\tif linkAttrs.EncapType \u003d\u003d \"loopback\" {"},{"line_number":52,"context_line":"\t\t\tcontinue"},{"line_number":53,"context_line":"\t\t}"},{"line_number":54,"context_line":"\t\tvar iface netapi.Interface"},{"line_number":55,"context_line":"\t\tswitch l :\u003d link.(type) {"},{"line_number":56,"context_line":"\t\tcase *netlink.Device:"},{"line_number":57,"context_line":"\t\t\tmac :\u003d link.Attrs().PermHardwareAddr"}],"source_content_type":"text/x-go","patch_set":1,"id":"c851b209_433a9a1f","line":54,"range":{"start_line":54,"start_character":2,"end_line":54,"end_character":28},"in_reply_to":"d1f5afd1_f81a4177","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":61,"context_line":"\t\t\t\t// Errors are expected, not all interfaces support this."},{"line_number":62,"context_line":"\t\t\t\t// If a permanent hardware address could not be obtained, fall"},{"line_number":63,"context_line":"\t\t\t\t// back to the configured hardware address."},{"line_number":64,"context_line":"\t\t\t\tif err !\u003d nil || len(mac) \u003d\u003d 0 {"},{"line_number":65,"context_line":"\t\t\t\t\tmac \u003d link.Attrs().HardwareAddr"},{"line_number":66,"context_line":"\t\t\t\t}"},{"line_number":67,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"ecda787a_fadf79e2","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":34},"updated":"2023-03-07 19:36:05.000000000","message":"I don\u0027t understand this check.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"173bb6f92abe594647ad6361f704314c34d62c04","unresolved":true,"context_lines":[{"line_number":61,"context_line":"\t\t\t\t// Errors are expected, not all interfaces support this."},{"line_number":62,"context_line":"\t\t\t\t// If a permanent hardware address could not be obtained, fall"},{"line_number":63,"context_line":"\t\t\t\t// back to the configured hardware address."},{"line_number":64,"context_line":"\t\t\t\tif err !\u003d nil || len(mac) \u003d\u003d 0 {"},{"line_number":65,"context_line":"\t\t\t\t\tmac \u003d link.Attrs().HardwareAddr"},{"line_number":66,"context_line":"\t\t\t\t}"},{"line_number":67,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"b78dcdf1_2ab375cc","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":34},"in_reply_to":"2299940c_fe393ae7","updated":"2023-03-09 10:20:55.000000000","message":"Then please document that getPermanentHWAddrLegacy might return a zero-length result alongside a nil error. Or maybe change it so that it returns an error if it couldn\u0027t figure out the MAC address? We don\u0027t need that method to strictly be a syscall wrapper.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"2cc0069a8126b37823022ccebebc6f95281638ec","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\t\t\t\t// Errors are expected, not all interfaces support this."},{"line_number":62,"context_line":"\t\t\t\t// If a permanent hardware address could not be obtained, fall"},{"line_number":63,"context_line":"\t\t\t\t// back to the configured hardware address."},{"line_number":64,"context_line":"\t\t\t\tif err !\u003d nil || len(mac) \u003d\u003d 0 {"},{"line_number":65,"context_line":"\t\t\t\t\tmac \u003d link.Attrs().HardwareAddr"},{"line_number":66,"context_line":"\t\t\t\t}"},{"line_number":67,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"d7ecbc1a_6a416c57","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":34},"in_reply_to":"b78dcdf1_2ab375cc","updated":"2023-03-09 11:25:45.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":true,"context_lines":[{"line_number":61,"context_line":"\t\t\t\t// Errors are expected, not all interfaces support this."},{"line_number":62,"context_line":"\t\t\t\t// If a permanent hardware address could not be obtained, fall"},{"line_number":63,"context_line":"\t\t\t\t// back to the configured hardware address."},{"line_number":64,"context_line":"\t\t\t\tif err !\u003d nil || len(mac) \u003d\u003d 0 {"},{"line_number":65,"context_line":"\t\t\t\t\tmac \u003d link.Attrs().HardwareAddr"},{"line_number":66,"context_line":"\t\t\t\t}"},{"line_number":67,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"2299940c_fe393ae7","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":34},"in_reply_to":"ecda787a_fadf79e2","updated":"2023-03-08 16:27:05.000000000","message":"mac can be zero-length which indicates that it doesn\u0027t exist. This doesn\u0027t necessarily cause the syscall to fail.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":91,"context_line":"\t\tcase *netlink.Vlan:"},{"line_number":92,"context_line":"\t\t\tparentLink, err :\u003d netlink.LinkByIndex(l.ParentIndex)"},{"line_number":93,"context_line":"\t\t\tif err !\u003d nil {"},{"line_number":94,"context_line":"\t\t\t\twarnings \u003d append(warnings, fmt.Errorf(\"unable to get parent for VLAN interface %q: %w\", iface.Name, err))"},{"line_number":95,"context_line":"\t\t\t}"},{"line_number":96,"context_line":"\t\t\tiface.Type \u003d \u0026netapi.Interface_Vlan{Vlan: \u0026netapi.VLAN{"},{"line_number":97,"context_line":"\t\t\t\tId:       int32(l.VlanId),"}],"source_content_type":"text/x-go","patch_set":1,"id":"12fa77c6_cc8247a1","line":94,"range":{"start_line":94,"start_character":4,"end_line":94,"end_character":12},"updated":"2023-03-07 19:36:05.000000000","message":"If this happens we\u0027ll get a null pointer deref at line 99, no?","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":91,"context_line":"\t\tcase *netlink.Vlan:"},{"line_number":92,"context_line":"\t\t\tparentLink, err :\u003d netlink.LinkByIndex(l.ParentIndex)"},{"line_number":93,"context_line":"\t\t\tif err !\u003d nil {"},{"line_number":94,"context_line":"\t\t\t\twarnings \u003d append(warnings, fmt.Errorf(\"unable to get parent for VLAN interface %q: %w\", iface.Name, err))"},{"line_number":95,"context_line":"\t\t\t}"},{"line_number":96,"context_line":"\t\t\tiface.Type \u003d \u0026netapi.Interface_Vlan{Vlan: \u0026netapi.VLAN{"},{"line_number":97,"context_line":"\t\t\t\tId:       int32(l.VlanId),"}],"source_content_type":"text/x-go","patch_set":1,"id":"70db72ea_e8129879","line":94,"range":{"start_line":94,"start_character":4,"end_line":94,"end_character":12},"in_reply_to":"12fa77c6_cc8247a1","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":101,"context_line":"\t\tdefault:"},{"line_number":102,"context_line":"\t\t\tcontinue"},{"line_number":103,"context_line":"\t\t}"},{"line_number":104,"context_line":"\t\tiface.Name \u003d linkAttrs.Name"},{"line_number":105,"context_line":"\t\tiface.Mtu \u003d int32(linkAttrs.MTU)"},{"line_number":106,"context_line":"\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)"},{"line_number":107,"context_line":"\t\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"360e2d84_83ab31c2","line":104,"range":{"start_line":104,"start_character":2,"end_line":104,"end_character":29},"updated":"2023-03-07 19:36:05.000000000","message":"```suggestion\n\t\t// Append common interface data to netapi interface.\n\t\tiface.Name \u003d linkAttrs.Name\n```","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":101,"context_line":"\t\tdefault:"},{"line_number":102,"context_line":"\t\t\tcontinue"},{"line_number":103,"context_line":"\t\t}"},{"line_number":104,"context_line":"\t\tiface.Name \u003d linkAttrs.Name"},{"line_number":105,"context_line":"\t\tiface.Mtu \u003d int32(linkAttrs.MTU)"},{"line_number":106,"context_line":"\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)"},{"line_number":107,"context_line":"\t\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"2acee296_df622c65","line":104,"range":{"start_line":104,"start_character":2,"end_line":104,"end_character":29},"in_reply_to":"360e2d84_83ab31c2","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":103,"context_line":"\t\t}"},{"line_number":104,"context_line":"\t\tiface.Name \u003d linkAttrs.Name"},{"line_number":105,"context_line":"\t\tiface.Mtu \u003d int32(linkAttrs.MTU)"},{"line_number":106,"context_line":"\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)"},{"line_number":107,"context_line":"\t\tif err !\u003d nil {"},{"line_number":108,"context_line":"\t\t\treturn nil, nil, fmt.Errorf(\"failed to show addresses: %w\", err)"},{"line_number":109,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"cedbd925_3ff32848","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":58},"updated":"2023-03-07 19:36:05.000000000","message":"```suggestion\n\t\t// Collect addresses into interface.\n\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)\n```","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":103,"context_line":"\t\t}"},{"line_number":104,"context_line":"\t\tiface.Name \u003d linkAttrs.Name"},{"line_number":105,"context_line":"\t\tiface.Mtu \u003d int32(linkAttrs.MTU)"},{"line_number":106,"context_line":"\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)"},{"line_number":107,"context_line":"\t\tif err !\u003d nil {"},{"line_number":108,"context_line":"\t\t\treturn nil, nil, fmt.Errorf(\"failed to show addresses: %w\", err)"},{"line_number":109,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"abe3ceff_ab7b4d86","line":106,"range":{"start_line":106,"start_character":2,"end_line":106,"end_character":58},"in_reply_to":"cedbd925_3ff32848","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":104,"context_line":"\t\tiface.Name \u003d linkAttrs.Name"},{"line_number":105,"context_line":"\t\tiface.Mtu \u003d int32(linkAttrs.MTU)"},{"line_number":106,"context_line":"\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)"},{"line_number":107,"context_line":"\t\tif err !\u003d nil {"},{"line_number":108,"context_line":"\t\t\treturn nil, nil, fmt.Errorf(\"failed to show addresses: %w\", err)"},{"line_number":109,"context_line":"\t\t}"},{"line_number":110,"context_line":"\t\tfor _, a :\u003d range addrs {"}],"source_content_type":"text/x-go","patch_set":1,"id":"8e5eaa1c_7525215e","line":107,"range":{"start_line":107,"start_character":2,"end_line":107,"end_character":17},"updated":"2023-03-07 19:36:05.000000000","message":"Let\u0027s turn this into a warning and keep going? Failing the entire call seems somewhat brittle.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":104,"context_line":"\t\tiface.Name \u003d linkAttrs.Name"},{"line_number":105,"context_line":"\t\tiface.Mtu \u003d int32(linkAttrs.MTU)"},{"line_number":106,"context_line":"\t\taddrs, err :\u003d netlink.AddrList(link, netlink.FAMILY_ALL)"},{"line_number":107,"context_line":"\t\tif err !\u003d nil {"},{"line_number":108,"context_line":"\t\t\treturn nil, nil, fmt.Errorf(\"failed to show addresses: %w\", err)"},{"line_number":109,"context_line":"\t\t}"},{"line_number":110,"context_line":"\t\tfor _, a :\u003d range addrs {"}],"source_content_type":"text/x-go","patch_set":1,"id":"d8840ac2_ae6975a0","line":107,"range":{"start_line":107,"start_character":2,"end_line":107,"end_character":17},"in_reply_to":"8e5eaa1c_7525215e","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":120,"context_line":"\t\t\t\t\t// Enable IPv6 Autoconfig"},{"line_number":121,"context_line":"\t\t\t\t\tif iface.Ipv6Autoconfig \u003d\u003d nil {"},{"line_number":122,"context_line":"\t\t\t\t\t\tiface.Ipv6Autoconfig \u003d \u0026netapi.IPv6Autoconfig{}"},{"line_number":123,"context_line":"\t\t\t\t\t\tuseTempaddrRaw, err :\u003d os.ReadFile(fmt.Sprintf(\"/proc/sys/net/ipv6/conf/%s/use_tempaddr\", iface.Name))"},{"line_number":124,"context_line":"\t\t\t\t\t\tif err !\u003d nil {"},{"line_number":125,"context_line":"\t\t\t\t\t\t\twarnings \u003d append(warnings, fmt.Errorf(\"failed to read use_tempaddr sysctl for interface %q: %w\", iface.Name, err))"},{"line_number":126,"context_line":"\t\t\t\t\t\t} else {"},{"line_number":127,"context_line":"\t\t\t\t\t\t\tuseTempaddr, err :\u003d strconv.ParseInt(strings.TrimSpace(string(useTempaddrRaw)), 10, 64)"},{"line_number":128,"context_line":"\t\t\t\t\t\t\tif err !\u003d nil {"},{"line_number":129,"context_line":"\t\t\t\t\t\t\t\twarnings \u003d append(warnings, fmt.Errorf(\"failed to parse use_tempaddr sysctl for interface %q: %w\", iface.Name, err))"},{"line_number":130,"context_line":"\t\t\t\t\t\t\t} else {"},{"line_number":131,"context_line":"\t\t\t\t\t\t\t\tswitch {"},{"line_number":132,"context_line":"\t\t\t\t\t\t\t\tcase useTempaddr \u003c\u003d 0:"},{"line_number":133,"context_line":"\t\t\t\t\t\t\t\t\tiface.Ipv6Autoconfig.Privacy \u003d netapi.IPv6Autoconfig_DISABLE"},{"line_number":134,"context_line":"\t\t\t\t\t\t\t\tcase useTempaddr \u003d\u003d 1:"},{"line_number":135,"context_line":"\t\t\t\t\t\t\t\t\tiface.Ipv6Autoconfig.Privacy \u003d netapi.IPv6Autoconfig_AVOID"},{"line_number":136,"context_line":"\t\t\t\t\t\t\t\tcase useTempaddr \u003e 1:"},{"line_number":137,"context_line":"\t\t\t\t\t\t\t\t\tiface.Ipv6Autoconfig.Privacy \u003d netapi.IPv6Autoconfig_PREFER"},{"line_number":138,"context_line":"\t\t\t\t\t\t\t\t}"},{"line_number":139,"context_line":"\t\t\t\t\t\t\t}"},{"line_number":140,"context_line":"\t\t\t\t\t\t}"},{"line_number":141,"context_line":"\t\t\t\t\t}"},{"line_number":142,"context_line":"\t\t\t\t} else {"},{"line_number":143,"context_line":"\t\t\t\t\tif iface.Ipv4Autoconfig \u003d\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"503df80a_5bb19066","line":140,"range":{"start_line":123,"start_character":0,"end_line":140,"end_character":7},"updated":"2023-03-07 19:36:05.000000000","message":"Split this out into a separate functions (getIPv6IfaceAutoconfigPrivacy?).","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":120,"context_line":"\t\t\t\t\t// Enable IPv6 Autoconfig"},{"line_number":121,"context_line":"\t\t\t\t\tif iface.Ipv6Autoconfig \u003d\u003d nil {"},{"line_number":122,"context_line":"\t\t\t\t\t\tiface.Ipv6Autoconfig \u003d \u0026netapi.IPv6Autoconfig{}"},{"line_number":123,"context_line":"\t\t\t\t\t\tuseTempaddrRaw, err :\u003d os.ReadFile(fmt.Sprintf(\"/proc/sys/net/ipv6/conf/%s/use_tempaddr\", iface.Name))"},{"line_number":124,"context_line":"\t\t\t\t\t\tif err !\u003d nil {"},{"line_number":125,"context_line":"\t\t\t\t\t\t\twarnings \u003d append(warnings, fmt.Errorf(\"failed to read use_tempaddr sysctl for interface %q: %w\", iface.Name, err))"},{"line_number":126,"context_line":"\t\t\t\t\t\t} else {"},{"line_number":127,"context_line":"\t\t\t\t\t\t\tuseTempaddr, err :\u003d strconv.ParseInt(strings.TrimSpace(string(useTempaddrRaw)), 10, 64)"},{"line_number":128,"context_line":"\t\t\t\t\t\t\tif err !\u003d nil {"},{"line_number":129,"context_line":"\t\t\t\t\t\t\t\twarnings \u003d append(warnings, fmt.Errorf(\"failed to parse use_tempaddr sysctl for interface %q: %w\", iface.Name, err))"},{"line_number":130,"context_line":"\t\t\t\t\t\t\t} else {"},{"line_number":131,"context_line":"\t\t\t\t\t\t\t\tswitch {"},{"line_number":132,"context_line":"\t\t\t\t\t\t\t\tcase useTempaddr \u003c\u003d 0:"},{"line_number":133,"context_line":"\t\t\t\t\t\t\t\t\tiface.Ipv6Autoconfig.Privacy \u003d netapi.IPv6Autoconfig_DISABLE"},{"line_number":134,"context_line":"\t\t\t\t\t\t\t\tcase useTempaddr \u003d\u003d 1:"},{"line_number":135,"context_line":"\t\t\t\t\t\t\t\t\tiface.Ipv6Autoconfig.Privacy \u003d netapi.IPv6Autoconfig_AVOID"},{"line_number":136,"context_line":"\t\t\t\t\t\t\t\tcase useTempaddr \u003e 1:"},{"line_number":137,"context_line":"\t\t\t\t\t\t\t\t\tiface.Ipv6Autoconfig.Privacy \u003d netapi.IPv6Autoconfig_PREFER"},{"line_number":138,"context_line":"\t\t\t\t\t\t\t\t}"},{"line_number":139,"context_line":"\t\t\t\t\t\t\t}"},{"line_number":140,"context_line":"\t\t\t\t\t\t}"},{"line_number":141,"context_line":"\t\t\t\t\t}"},{"line_number":142,"context_line":"\t\t\t\t} else {"},{"line_number":143,"context_line":"\t\t\t\t\tif iface.Ipv4Autoconfig \u003d\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"354e4536_a63f1ec9","line":140,"range":{"start_line":123,"start_character":0,"end_line":140,"end_character":7},"in_reply_to":"503df80a_5bb19066","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":169,"context_line":"\tif err !\u003d nil {"},{"line_number":170,"context_line":"\t\treturn nil, nil, fmt.Errorf(\"failed to list routes: %w\", err)"},{"line_number":171,"context_line":"\t}"},{"line_number":172,"context_line":"\tfor _, r :\u003d range routes {"},{"line_number":173,"context_line":"\t\tif r.Family !\u003d netlink.FAMILY_V4 \u0026\u0026 r.Family !\u003d netlink.FAMILY_V6 {"},{"line_number":174,"context_line":"\t\t\tcontinue"},{"line_number":175,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"4da041bd_7c749b00","line":172,"range":{"start_line":172,"start_character":1,"end_line":172,"end_character":27},"updated":"2023-03-07 19:36:05.000000000","message":"```suggestion\n\t// Collect all routes into routes assigned to exact netapi interfaces.\n\tfor _, r :\u003d range routes {\n```","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\tif err !\u003d nil {"},{"line_number":170,"context_line":"\t\treturn nil, nil, fmt.Errorf(\"failed to list routes: %w\", err)"},{"line_number":171,"context_line":"\t}"},{"line_number":172,"context_line":"\tfor _, r :\u003d range routes {"},{"line_number":173,"context_line":"\t\tif r.Family !\u003d netlink.FAMILY_V4 \u0026\u0026 r.Family !\u003d netlink.FAMILY_V6 {"},{"line_number":174,"context_line":"\t\t\tcontinue"},{"line_number":175,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"5cb35598_74217011","line":172,"range":{"start_line":172,"start_character":1,"end_line":172,"end_character":27},"in_reply_to":"4da041bd_7c749b00","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":204,"context_line":"\t\tif !r.Src.IsUnspecified() \u0026\u0026 len(r.Src) !\u003d 0 {"},{"line_number":205,"context_line":"\t\t\troute.SourceIp \u003d r.Src.String()"},{"line_number":206,"context_line":"\t\t}"},{"line_number":207,"context_line":"\t\troute.Metric \u003d int32(r.Priority)"},{"line_number":208,"context_line":"\t\tiface, ok :\u003d ifIdxMap[r.LinkIndex]"},{"line_number":209,"context_line":"\t\tif !ok {"},{"line_number":210,"context_line":"\t\t\tcontinue"}],"source_content_type":"text/x-go","patch_set":1,"id":"1ca335b5_a1007ac3","line":207,"range":{"start_line":207,"start_character":23,"end_line":207,"end_character":33},"updated":"2023-03-07 19:36:05.000000000","message":"Wait, how comes this is Priority and not Metric?","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"2cc0069a8126b37823022ccebebc6f95281638ec","unresolved":false,"context_lines":[{"line_number":204,"context_line":"\t\tif !r.Src.IsUnspecified() \u0026\u0026 len(r.Src) !\u003d 0 {"},{"line_number":205,"context_line":"\t\t\troute.SourceIp \u003d r.Src.String()"},{"line_number":206,"context_line":"\t\t}"},{"line_number":207,"context_line":"\t\troute.Metric \u003d int32(r.Priority)"},{"line_number":208,"context_line":"\t\tiface, ok :\u003d ifIdxMap[r.LinkIndex]"},{"line_number":209,"context_line":"\t\tif !ok {"},{"line_number":210,"context_line":"\t\t\tcontinue"}],"source_content_type":"text/x-go","patch_set":1,"id":"82495d54_6bb6fcd0","line":207,"range":{"start_line":207,"start_character":23,"end_line":207,"end_character":33},"in_reply_to":"13717722_d7b597c4","updated":"2023-03-09 11:25:45.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":true,"context_lines":[{"line_number":204,"context_line":"\t\tif !r.Src.IsUnspecified() \u0026\u0026 len(r.Src) !\u003d 0 {"},{"line_number":205,"context_line":"\t\t\troute.SourceIp \u003d r.Src.String()"},{"line_number":206,"context_line":"\t\t}"},{"line_number":207,"context_line":"\t\troute.Metric \u003d int32(r.Priority)"},{"line_number":208,"context_line":"\t\tiface, ok :\u003d ifIdxMap[r.LinkIndex]"},{"line_number":209,"context_line":"\t\tif !ok {"},{"line_number":210,"context_line":"\t\t\tcontinue"}],"source_content_type":"text/x-go","patch_set":1,"id":"922079af_32eb9a4d","line":207,"range":{"start_line":207,"start_character":23,"end_line":207,"end_character":33},"in_reply_to":"1ca335b5_a1007ac3","updated":"2023-03-08 16:27:05.000000000","message":"Netlink/Linux call them Priority. Do we want to rename? Metric seems like it\u0027s a lot more popular to me.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"173bb6f92abe594647ad6361f704314c34d62c04","unresolved":true,"context_lines":[{"line_number":204,"context_line":"\t\tif !r.Src.IsUnspecified() \u0026\u0026 len(r.Src) !\u003d 0 {"},{"line_number":205,"context_line":"\t\t\troute.SourceIp \u003d r.Src.String()"},{"line_number":206,"context_line":"\t\t}"},{"line_number":207,"context_line":"\t\troute.Metric \u003d int32(r.Priority)"},{"line_number":208,"context_line":"\t\tiface, ok :\u003d ifIdxMap[r.LinkIndex]"},{"line_number":209,"context_line":"\t\tif !ok {"},{"line_number":210,"context_line":"\t\t\tcontinue"}],"source_content_type":"text/x-go","patch_set":1,"id":"13717722_d7b597c4","line":207,"range":{"start_line":207,"start_character":23,"end_line":207,"end_character":33},"in_reply_to":"922079af_32eb9a4d","updated":"2023-03-09 10:20:55.000000000","message":"But it\u0027s weird - it acts like a metric, in the sense that a lower value has higher priority in the route selection algorithm, right? It\u0027s additionally weird as `ip r` calls them \u0027metric\u0027 not \u0027priority\u0027.\n\nI\u0027m fine with whatever, as long as we clearly document any idiosyncrasies of naming here.","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"de90dcc41333c128dd84ede0c92f3d11e7b7ccea","unresolved":true,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"\t\tiface.Route \u003d append(iface.Route, \u0026route)"},{"line_number":214,"context_line":"\t}"},{"line_number":215,"context_line":"\tfor ifIdx, iface :\u003d range ifIdxMap {"},{"line_number":216,"context_line":"\t\tswitch i :\u003d iface.Type.(type) {"},{"line_number":217,"context_line":"\t\tcase *netapi.Interface_Bond:"},{"line_number":218,"context_line":"\t\t\t// Add children here, as now they are all known"}],"source_content_type":"text/x-go","patch_set":1,"id":"572ca3c4_255a5532","line":215,"range":{"start_line":215,"start_character":1,"end_line":215,"end_character":37},"updated":"2023-03-07 19:36:05.000000000","message":"```suggestion\n\t// Finally, gather all interface into a list, filtering out unused ones.\n\tfor ifIdx, iface :\u003d range ifIdxMap {\n```","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"},{"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":"5c5f5bb65de54c3ff05337caf20fe061603858de","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"\t\tiface.Route \u003d append(iface.Route, \u0026route)"},{"line_number":214,"context_line":"\t}"},{"line_number":215,"context_line":"\tfor ifIdx, iface :\u003d range ifIdxMap {"},{"line_number":216,"context_line":"\t\tswitch i :\u003d iface.Type.(type) {"},{"line_number":217,"context_line":"\t\tcase *netapi.Interface_Bond:"},{"line_number":218,"context_line":"\t\t\t// Add children here, as now they are all known"}],"source_content_type":"text/x-go","patch_set":1,"id":"d75c7d12_98261727","line":215,"range":{"start_line":215,"start_character":1,"end_line":215,"end_character":37},"in_reply_to":"572ca3c4_255a5532","updated":"2023-03-08 16:27:05.000000000","message":"Done","commit_id":"d6328a5ecab28c301815986957ffcb6b01d3130d"}]}
