)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"832bc6c2d05cab9925e8bf8e886a42a07ad26335","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jens Harbott \u003cj.harbott@x-ion.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-28 07:41:31 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Fix error when using protocol number in sg"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_5b53b417","line":7,"updated":"2017-11-28 18:19:33.000000000","message":"Could you please explain in the commit message how numbers for known protocols got into the database? Is it always stored as passed from API disregarding whether the protocol number is known?","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"0ee3f17397ba5e5c23e0130533c42a54c2ec7245","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jens Harbott \u003cj.harbott@x-ion.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-28 07:41:31 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Fix error when using protocol number in sg"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_fbc3a5eb","line":7,"in_reply_to":"ff82abbf_5b53b417","updated":"2017-11-28 20:39:43.000000000","message":"You can create a rule with e.g. \"--proto 1\" instead of \"--proto icmp\" and then the \"1\" gets stored. Though that might be another bug and the API should convert well known protos to their canonical name already?\n\nThere is a scenario test for that here\n\nhttp://git.openstack.org/cgit/openstack/neutron-tempest-plugin/tree/neutron_tempest_plugin/scenario/test_security_groups.py#n126\n\nwhich is causing the blowup of the lb-scenario jobs.","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"2ced6df9e5fa9a04fec2d9498addb0f669f5b000","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jens Harbott \u003cj.harbott@x-ion.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-28 07:41:31 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Fix error when using protocol number in sg"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_2c16b14a","line":7,"in_reply_to":"ff82abbf_fbc3a5eb","updated":"2017-11-28 22:27:16.000000000","message":"Great. I think this should be captured in the commit message.","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"882268fe63869262b7baa2500ce84a761d4af6f2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Fix error when using protocol number in sg"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_84b9e215","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":30},"updated":"2017-11-28 13:47:25.000000000","message":"Is there a missing reference?","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b5b4b5986bd2520d82f6ec5218cd41d339d07059","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: Fix error when using protocol number in sg"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_a4a506a4","line":9,"range":{"start_line":9,"start_character":27,"end_line":9,"end_character":30},"in_reply_to":"ff82abbf_84b9e215","updated":"2017-11-28 14:01:08.000000000","message":"Indeed, that should have been\n\n[1] I5895250b47ddf664d214cf085be693c3897e0c87\n\nWill update once I have an idea how to best fix the string vs. integer issue.","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Brian Haley \u003cbhaley@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-12-01 16:43:23 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix error when using protocol number in SG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_33c76d48","line":7,"updated":"2017-12-05 19:28:50.000000000","message":"the commit message suggests there is an error but doesn\u0027t describe what it is. Of course, reader may try to fetch it from Launchpad, but what if it\u0027s gone / down? I would suggest we give a brief description of the problem in the commit message, so that we can later figure out the intent without falling back to internet connectivity. It shouldn\u0027t be a huge description, just the essence of it.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Brian Haley \u003cbhaley@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-12-01 16:43:23 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix error when using protocol number in SG"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_b4dfbe38","line":7,"in_reply_to":"df87a7cf_33c76d48","updated":"2017-12-07 01:43:44.000000000","message":"Done","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Updated the iptables number mapping dict to have all"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_93dd1916","line":11,"updated":"2017-12-05 19:28:50.000000000","message":"(would make sense to list a few here as examples)","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Updated the iptables number mapping dict to have all"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_f4c22659","line":11,"in_reply_to":"df87a7cf_93dd1916","updated":"2017-12-07 01:43:44.000000000","message":"Done","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Updated the iptables number mapping dict to have all"},{"line_number":15,"context_line":"known values, even those that are already well-known"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_53e791e5","line":12,"updated":"2017-12-05 19:28:50.000000000","message":"this is not entirely clearly worded. Please expand explanation.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The solution introduced in [1] has two deficiencies:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Updated the iptables number mapping dict to have all"},{"line_number":15,"context_line":"known values, even those that are already well-known"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_54e8b2e0","line":12,"in_reply_to":"df87a7cf_53e791e5","updated":"2017-12-07 01:43:44.000000000","message":"Done","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Updated the iptables number mapping dict to have all"},{"line_number":15,"context_line":"known values, even those that are already well-known"},{"line_number":16,"context_line":"and should have been using a string instead of a number,"},{"line_number":17,"context_line":"like \u0027tcp\u0027 and not \u00276\u0027."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_93067986","line":15,"range":{"start_line":14,"start_character":49,"end_line":15,"end_character":12},"updated":"2017-12-05 19:28:50.000000000","message":"Please describe why you believe the list is complete now (how do we get the list?)","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- It is missing a couple of protocols"},{"line_number":12,"context_line":"- \u00271\u0027 !\u003d 1"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Updated the iptables number mapping dict to have all"},{"line_number":15,"context_line":"known values, even those that are already well-known"},{"line_number":16,"context_line":"and should have been using a string instead of a number,"},{"line_number":17,"context_line":"like \u0027tcp\u0027 and not \u00276\u0027."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_94571acb","line":15,"range":{"start_line":14,"start_character":49,"end_line":15,"end_character":12},"in_reply_to":"df87a7cf_93067986","updated":"2017-12-07 01:43:44.000000000","message":"I\u0027ve put the commands in the constants file, and of course it could change going forward, I\u0027ll add the word \"currently\" in here.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"what will be passed from the SG code."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Removed IPTABLES_PROTOCOL_MAP as it lives in neutron-lib,"},{"line_number":24,"context_line":"and accidentally snuck-in in [1]."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"[1] I5895250b47ddf664d214cf085be693c3897e0c87"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_d3ac018e","line":24,"updated":"2017-12-05 19:28:50.000000000","message":"this removal seems unrelated and may be an issue if we decide to backport the patch to a release where neutron-lib didn\u0027t have IPTABLES_PROTOCOL_MAP. I would suggest we remove it separately.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"what will be passed from the SG code."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Removed IPTABLES_PROTOCOL_MAP as it lives in neutron-lib,"},{"line_number":24,"context_line":"and accidentally snuck-in in [1]."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"[1] I5895250b47ddf664d214cf085be693c3897e0c87"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"df87a7cf_74c4d691","line":24,"in_reply_to":"df87a7cf_d3ac018e","updated":"2017-12-07 01:43:44.000000000","message":"Well, it was removed at least a cycle ago and put in neutron-lib, but then I had a cut/paste blunder and put it back a month ago, so I don\u0027t think anyone is going to miss it.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"}],"neutron/agent/linux/iptables_firewall.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bc01351b7d5b6ecd9811d0b55ad112ab169c0712","unresolved":false,"context_lines":[{"line_number":641,"context_line":"            rule_protocol \u003d n_const.IPTABLES_PROTOCOL_NAME_MAP[protocol]"},{"line_number":642,"context_line":"        # protocol zero is a special case and requires no \u0027-p\u0027"},{"line_number":643,"context_line":"        if rule_protocol:"},{"line_number":644,"context_line":"            iptables_rule \u003d [\u0027-p\u0027, rule_protocol]"},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"        if (is_port and rule_protocol in constants.IPTABLES_PROTOCOL_MAP):"},{"line_number":647,"context_line":"            # iptables adds \u0027-m protocol\u0027 when the port number is specified"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_375820f8","line":644,"updated":"2017-11-29 21:06:54.000000000","message":"So just an update here.\n\nThe security group DB code will always store the entry based on the value passed in \u0027--protocol XX\u0027, whether that is \u0027tcp\u0027 or \u00276\u0027.  It is a bit of a mess when you mix them:\n\n$ openstack security group rule list default\n+--------------------------------------+-------------+-----------+------------+--------------------------------------+\n| ID                                   | IP Protocol | IP Range  | Port Range | Remote Security Group                |\n+--------------------------------------+-------------+-----------+------------+--------------------------------------+\n| 0d419c93-49e0-483e-b9e3-5519e87e4e9e | 89          | 0.0.0.0/0 |            | None                                 |\n| 1457b3aa-0b75-4dbd-a8cb-7111c7bc9832 | tcp         | None      | 22:22      | None                                 |\n| 22625b22-d02c-4e55-9fdb-1c1fb0fdda3d | 99          | 0.0.0.0/0 |            | None                                 |\n| 228c39b7-6d64-46b6-b10e-6a73a89409af | None        | None      |            | 341d35f2-b931-494c-a6b4-f0b880d2cc05 |\n| 395cae51-3ab7-46b4-89f8-690b0536f53b | 6           | 0.0.0.0/0 | 101:101    | None                                 |\n| 4d25aa31-a5c5-4bde-9d05-a8a54da20514 | icmp        | 0.0.0.0/0 |            | None                                 |\n| 77d2d543-f969-4d28-a990-6d7c01b14cd7 | None        | None      |            | None                                 |\n| 86d35c45-d3d5-42ef-a896-9d6bd5c10440 | None        | None      |            | None                                 |\n| b056e0bb-97e7-4088-983f-418625e84caf | icmp        | None      |            | None                                 |\n| c5f378a2-8747-4c39-9639-00c3d984a6fe | None        | None      |            | 341d35f2-b931-494c-a6b4-f0b880d2cc05 |\n| ce1d14da-8e9e-4a3c-8ca1-e5dc296bb454 | tcp         | 0.0.0.0/0 | 22:22      | None                                 |\n| cf5a879a-6a57-4a06-bf14-1a14a7100147 | 98          | None      |            | None                                 |\n| fddcb62b-e5a6-436e-ba81-43782c175708 | 98          | 0.0.0.0/0 |            | None                                 |\n+--------------------------------------+-------------+-----------+------------+--------------------------------------+\n\n(I\u0027ve now started fixing the openstackclient to handle IPv6 better after looking at above)\n\nLuckily it will detect duplicates, so we should be safe there.\n\nSo I think I really just need to add some tests.","commit_id":"295c21b182be5b5d9ed6f13cd5e9d45937180936"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f86a3a26625a87a534b0d0bf0ef97693345ae850","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        if (is_port and rule_protocol in constants.IPTABLES_PROTOCOL_MAP):"},{"line_number":647,"context_line":"            # iptables adds \u0027-m protocol\u0027 when the port number is specified"},{"line_number":648,"context_line":"            iptables_rule +\u003d [\u0027-m\u0027,"},{"line_number":649,"context_line":"                              constants.IPTABLES_PROTOCOL_MAP[rule_protocol]]"},{"line_number":650,"context_line":"        return iptables_rule"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_edf635fa","line":649,"updated":"2017-12-01 11:06:03.000000000","message":"nit: is this change necessary?","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ce48d5e40e6cc5cc0c31c8385eccf4546e91adca","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        if (is_port and rule_protocol in constants.IPTABLES_PROTOCOL_MAP):"},{"line_number":647,"context_line":"            # iptables adds \u0027-m protocol\u0027 when the port number is specified"},{"line_number":648,"context_line":"            iptables_rule +\u003d [\u0027-m\u0027,"},{"line_number":649,"context_line":"                              constants.IPTABLES_PROTOCOL_MAP[rule_protocol]]"},{"line_number":650,"context_line":"        return iptables_rule"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_e38e61cf","line":649,"in_reply_to":"ff82abbf_edf635fa","updated":"2017-12-01 21:32:34.000000000","message":"I don\u0027t have my debugging window in front of me, so I\u0027ll confirm Monday, but I remember that when adding a rule with protocol 6 (tcp) the 6 got passed to here.  In that case we\u0027d want to use \u0027tcp\u0027 instead, which is what rule_protocol should be, that way we correctly add \u0027-m tcp\u0027 if there is a port.","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":636,"context_line":"    def _protocol_arg(self, protocol, is_port):"},{"line_number":637,"context_line":"        if not protocol:"},{"line_number":638,"context_line":"            return []"},{"line_number":639,"context_line":"        rule_protocol \u003d protocol"},{"line_number":640,"context_line":"        if (protocol in n_const.IPTABLES_PROTOCOL_NAME_MAP):"},{"line_number":641,"context_line":"            rule_protocol \u003d n_const.IPTABLES_PROTOCOL_NAME_MAP[protocol]"},{"line_number":642,"context_line":"        # protocol zero is a special case and requires no \u0027-p\u0027"},{"line_number":643,"context_line":"        if rule_protocol:"},{"line_number":644,"context_line":"            iptables_rule \u003d [\u0027-p\u0027, rule_protocol]"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_bcdfcfd4","line":641,"range":{"start_line":639,"start_character":8,"end_line":641,"end_character":72},"updated":"2017-12-05 19:28:50.000000000","message":"(no action required) rule_protocol \u003d MAP.get(protocol, protocol)","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":636,"context_line":"    def _protocol_arg(self, protocol, is_port):"},{"line_number":637,"context_line":"        if not protocol:"},{"line_number":638,"context_line":"            return []"},{"line_number":639,"context_line":"        rule_protocol \u003d protocol"},{"line_number":640,"context_line":"        if (protocol in n_const.IPTABLES_PROTOCOL_NAME_MAP):"},{"line_number":641,"context_line":"            rule_protocol \u003d n_const.IPTABLES_PROTOCOL_NAME_MAP[protocol]"},{"line_number":642,"context_line":"        # protocol zero is a special case and requires no \u0027-p\u0027"},{"line_number":643,"context_line":"        if rule_protocol:"},{"line_number":644,"context_line":"            iptables_rule \u003d [\u0027-p\u0027, rule_protocol]"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_4c64b5e4","line":641,"range":{"start_line":639,"start_character":8,"end_line":641,"end_character":72},"in_reply_to":"df87a7cf_bcdfcfd4","updated":"2017-12-07 01:43:44.000000000","message":"Done","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0dce7778fbda83a0ce5048409ce45fb3f40835f3","unresolved":false,"context_lines":[{"line_number":634,"context_line":"        return iptables_rules"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def _protocol_arg(self, protocol, is_port):"},{"line_number":637,"context_line":"        if not protocol:"},{"line_number":638,"context_line":"            return []"},{"line_number":639,"context_line":"        rule_protocol \u003d n_const.IPTABLES_PROTOCOL_NAME_MAP.get(protocol,"},{"line_number":640,"context_line":"                                                               protocol)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_61a2bbff","line":637,"updated":"2017-12-07 20:38:49.000000000","message":"This check can go away with the change on L639 I believe, as it would just return None.","commit_id":"82eb79fe68cb8d8de338a2c8c0c9634dea7f5ee6"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9d44c78fa3ea757ff390fff294be04b06ac97569","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            # iptables adds \u0027-m protocol\u0027 when the port number is specified"},{"line_number":647,"context_line":"            iptables_rule +\u003d [\u0027-m\u0027,"},{"line_number":648,"context_line":"                              constants.IPTABLES_PROTOCOL_MAP[rule_protocol]]"},{"line_number":649,"context_line":"        return iptables_rule"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"},{"line_number":652,"context_line":"        args \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_709939c2","line":649,"updated":"2017-12-07 10:16:00.000000000","message":"This is going to raise an exception if protocol is \u00270\u0027, isn\u0027t it?","commit_id":"82eb79fe68cb8d8de338a2c8c0c9634dea7f5ee6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0dce7778fbda83a0ce5048409ce45fb3f40835f3","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            # iptables adds \u0027-m protocol\u0027 when the port number is specified"},{"line_number":647,"context_line":"            iptables_rule +\u003d [\u0027-m\u0027,"},{"line_number":648,"context_line":"                              constants.IPTABLES_PROTOCOL_MAP[rule_protocol]]"},{"line_number":649,"context_line":"        return iptables_rule"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _port_arg(self, direction, protocol, port_range_min, port_range_max):"},{"line_number":652,"context_line":"        args \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_c16b87b4","line":649,"in_reply_to":"df87a7cf_709939c2","updated":"2017-12-07 20:38:49.000000000","message":"I didn\u0027t think it did in my testing, but we should always initialize iptables_rule \u003d []","commit_id":"82eb79fe68cb8d8de338a2c8c0c9634dea7f5ee6"}],"neutron/common/constants.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b5b4b5986bd2520d82f6ec5218cd41d339d07059","unresolved":false,"context_lines":[{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":55,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {3: \u0027ggp\u0027, \u00271\u0027: \u0027icmp\u0027,"},{"line_number":56,"context_line":"                                    4: \u0027ipencap\u0027,"},{"line_number":57,"context_line":"                                    5: \u0027st\u0027,"},{"line_number":58,"context_line":"                                    9: \u0027igp\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_84ed62b8","line":55,"updated":"2017-11-28 14:01:08.000000000","message":"FYI, this is only the single scenario test case, more are missing like 2:igmp, 6:tcp ...","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"832bc6c2d05cab9925e8bf8e886a42a07ad26335","unresolved":false,"context_lines":[{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":55,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {3: \u0027ggp\u0027, \u00271\u0027: \u0027icmp\u0027,"},{"line_number":56,"context_line":"                                    4: \u0027ipencap\u0027,"},{"line_number":57,"context_line":"                                    5: \u0027st\u0027,"},{"line_number":58,"context_line":"                                    9: \u0027igp\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_db3ee4b6","line":55,"in_reply_to":"ff82abbf_2a98dc19","updated":"2017-11-28 18:19:33.000000000","message":"Should all keys be strings here?","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"61fb00c4d8b8af33ef4ecbf561db168bc730552a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":55,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {3: \u0027ggp\u0027, \u00271\u0027: \u0027icmp\u0027,"},{"line_number":56,"context_line":"                                    4: \u0027ipencap\u0027,"},{"line_number":57,"context_line":"                                    5: \u0027st\u0027,"},{"line_number":58,"context_line":"                                    9: \u0027igp\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_32c36a59","line":55,"in_reply_to":"ff82abbf_6c10394f","updated":"2017-11-28 23:55:04.000000000","message":"Yes, I think changing the keys to strings is best.\n\nThe SG code should try and store the protocol string, like \u0027tcp\u0027, in the DB, even when a number is given using IP_PROTOCOL_NUM_TO_NAME_MAP, but in the case where the string is unknown it will just store a number.\n\nThe iptables map is supposed to cover those number cases, and I wouldn\u0027t thought have been necessary for the known values.  I\u0027ll go through the code again to make sure I\u0027ve got that all right.\n\nI will also need to add a functional test since it\u0027s clear none of the unit tests caught anything, but then maybe there isn\u0027t one to catch these cases either.","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4e91e3d8f70b03c64c513ff77cd8096ce4062f83","unresolved":false,"context_lines":[{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":55,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {3: \u0027ggp\u0027, \u00271\u0027: \u0027icmp\u0027,"},{"line_number":56,"context_line":"                                    4: \u0027ipencap\u0027,"},{"line_number":57,"context_line":"                                    5: \u0027st\u0027,"},{"line_number":58,"context_line":"                                    9: \u0027igp\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_2a98dc19","line":55,"in_reply_to":"ff82abbf_84ed62b8","updated":"2017-11-28 17:03:41.000000000","message":"Crap, I really screwed this up didn\u0027t I, I can take over fixing it up if you like.\n\nI do think the original issue in the bug was around before this change landed though, right?  It was opened over two weeks before this merged.","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"0ee3f17397ba5e5c23e0130533c42a54c2ec7245","unresolved":false,"context_lines":[{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":55,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {3: \u0027ggp\u0027, \u00271\u0027: \u0027icmp\u0027,"},{"line_number":56,"context_line":"                                    4: \u0027ipencap\u0027,"},{"line_number":57,"context_line":"                                    5: \u0027st\u0027,"},{"line_number":58,"context_line":"                                    9: \u0027igp\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_fbf5e557","line":55,"in_reply_to":"ff82abbf_db3ee4b6","updated":"2017-11-28 20:39:43.000000000","message":"There are two options, either change all keys to strings here or add some code in the function that is using this trying to convert the string to an integer. https://review.openstack.org/#/c/511561/3/neutron/agent/linux/iptables_firewall.py\n\nNot sure which one is better.","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"2ced6df9e5fa9a04fec2d9498addb0f669f5b000","unresolved":false,"context_lines":[{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":55,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {3: \u0027ggp\u0027, \u00271\u0027: \u0027icmp\u0027,"},{"line_number":56,"context_line":"                                    4: \u0027ipencap\u0027,"},{"line_number":57,"context_line":"                                    5: \u0027st\u0027,"},{"line_number":58,"context_line":"                                    9: \u0027igp\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_6c10394f","line":55,"in_reply_to":"ff82abbf_fbf5e557","updated":"2017-11-28 22:27:16.000000000","message":"If this dict is used only in the context where strings are expected, having strings as keys is probably the easiest. (Though maybe not the most elegant.)","commit_id":"d5ed356d3923d0236170a38c3efe5a5d117c5fe3"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"acfb95d1d45b0d4fef30347c5a844b88ae36a814","unresolved":false,"context_lines":[{"line_number":48,"context_line":"IP_PROTOCOL_NUM_TO_NAME_MAP \u003d {"},{"line_number":49,"context_line":"    str(v): k for k, v in lib_constants.IP_PROTOCOL_MAP.items()}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"PROTO_NAME_NONE \u003d \u00270\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":54,"context_line":"# but sometimes those values are not identical.  This is a map"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_8f754834","line":51,"updated":"2017-11-30 05:52:38.000000000","message":"Seems this isn\u0027t used anywhere?","commit_id":"295c21b182be5b5d9ed6f13cd5e9d45937180936"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"963e68f4f8e35f2e9489a457563c11f098acb147","unresolved":false,"context_lines":[{"line_number":48,"context_line":"IP_PROTOCOL_NUM_TO_NAME_MAP \u003d {"},{"line_number":49,"context_line":"    str(v): k for k, v in lib_constants.IP_PROTOCOL_MAP.items()}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"PROTO_NAME_NONE \u003d \u00270\u0027"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":54,"context_line":"# but sometimes those values are not identical.  This is a map"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_7fbbbd71","line":51,"in_reply_to":"ff82abbf_8f754834","updated":"2017-11-30 22:40:06.000000000","message":"Yeah, I don\u0027t know why I added that.","commit_id":"295c21b182be5b5d9ed6f13cd5e9d45937180936"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ce48d5e40e6cc5cc0c31c8385eccf4546e91adca","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":54,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":55,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":56,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":57,"context_line":"# Protocol \u00270\u0027 uses no -p argument."},{"line_number":58,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {\u00270\u0027: None,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_a364d9ba","line":55,"range":{"start_line":55,"start_character":20,"end_line":55,"end_character":63},"updated":"2017-12-01 21:32:34.000000000","message":"Maybe this should say \"numbers that require a name to be used, because that is how iptables-save will display them\"","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6ac4a91fe678789493ba89d25924b71a00ba39d0","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":54,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":55,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":56,"context_line":"# This legacy mapping can go away once neutron-lib is updated."},{"line_number":57,"context_line":"# Protocol \u00270\u0027 uses no -p argument."},{"line_number":58,"context_line":"IPTABLES_PROTOCOL_LEGACY_NUM_MAP \u003d {\u00270\u0027: None,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_3ef6a091","line":55,"range":{"start_line":55,"start_character":20,"end_line":55,"end_character":63},"in_reply_to":"df87a7cf_a364d9ba","updated":"2017-12-01 22:07:35.000000000","message":"thx, new explanation is better IMHO :)","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f86a3a26625a87a534b0d0bf0ef97693345ae850","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                    \u0027139\u0027: \u0027hip\u0027,"},{"line_number":109,"context_line":"                                    \u0027140\u0027: \u0027shim6\u0027,"},{"line_number":110,"context_line":"                                    \u0027141\u0027: \u0027wesp\u0027,"},{"line_number":111,"context_line":"                                    \u0027142\u0027: \u0027rohc\u0027}"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# - \u0027ipv6-encap\u0027 uses \u0027ipv6\u0027"},{"line_number":114,"context_line":"# - \u0027icmpv6\u0027 uses \u0027ipv6-icmp\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_cdf1f103","line":111,"updated":"2017-12-01 11:06:03.000000000","message":"I\u0027m not sure if all assigned proto numbers should be here but according to https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml some of them are still missing","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6ac4a91fe678789493ba89d25924b71a00ba39d0","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                    \u0027139\u0027: \u0027hip\u0027,"},{"line_number":109,"context_line":"                                    \u0027140\u0027: \u0027shim6\u0027,"},{"line_number":110,"context_line":"                                    \u0027141\u0027: \u0027wesp\u0027,"},{"line_number":111,"context_line":"                                    \u0027142\u0027: \u0027rohc\u0027}"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# - \u0027ipv6-encap\u0027 uses \u0027ipv6\u0027"},{"line_number":114,"context_line":"# - \u0027icmpv6\u0027 uses \u0027ipv6-icmp\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_1ed07cf7","line":111,"in_reply_to":"df87a7cf_e369818b","updated":"2017-12-01 22:07:35.000000000","message":"ok, now it is clear for me. Thx for explanation","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ce48d5e40e6cc5cc0c31c8385eccf4546e91adca","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                    \u0027139\u0027: \u0027hip\u0027,"},{"line_number":109,"context_line":"                                    \u0027140\u0027: \u0027shim6\u0027,"},{"line_number":110,"context_line":"                                    \u0027141\u0027: \u0027wesp\u0027,"},{"line_number":111,"context_line":"                                    \u0027142\u0027: \u0027rohc\u0027}"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"# - \u0027ipv6-encap\u0027 uses \u0027ipv6\u0027"},{"line_number":114,"context_line":"# - \u0027icmpv6\u0027 uses \u0027ipv6-icmp\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_e369818b","line":111,"in_reply_to":"ff82abbf_cdf1f103","updated":"2017-12-01 21:32:34.000000000","message":"I only added a mapping here for protocols that iptables displays with a name, even if you added it with a number, for example, adding with \"-p 89\" will display as \"-p ospf\".  We start seeing convergence issues when what we use with iptables-restore doesn\u0027t match what iptables-save shows.","commit_id":"b537df4ddac46779077c98f33a288b21d509359f"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# of known protocol numbers that require a name to be used, because"},{"line_number":55,"context_line":"# that is how iptables-save will display them."},{"line_number":56,"context_line":"# Protocol \u00270\u0027 uses no -p argument."},{"line_number":57,"context_line":"IPTABLES_PROTOCOL_NUM_TO_NAME_MAP \u003d {\u00270\u0027: None,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_9c920bf6","line":54,"range":{"start_line":53,"start_character":2,"end_line":54,"end_character":67},"updated":"2017-12-05 19:28:50.000000000","message":"seems that one of those lines is a left over?","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol names or numbers that require a name change."},{"line_number":54,"context_line":"# of known protocol numbers that require a name to be used, because"},{"line_number":55,"context_line":"# that is how iptables-save will display them."},{"line_number":56,"context_line":"# Protocol \u00270\u0027 uses no -p argument."},{"line_number":57,"context_line":"IPTABLES_PROTOCOL_NUM_TO_NAME_MAP \u003d {\u00270\u0027: None,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_ac6541e3","line":54,"range":{"start_line":53,"start_character":2,"end_line":54,"end_character":67},"in_reply_to":"df87a7cf_9c920bf6","updated":"2017-12-07 01:43:44.000000000","message":"Done","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"# of known protocol numbers that require a name to be used, because"},{"line_number":55,"context_line":"# that is how iptables-save will display them."},{"line_number":56,"context_line":"# Protocol \u00270\u0027 uses no -p argument."},{"line_number":57,"context_line":"IPTABLES_PROTOCOL_NUM_TO_NAME_MAP \u003d {\u00270\u0027: None,"},{"line_number":58,"context_line":"                                     \u00271\u0027: \u0027icmp\u0027,"},{"line_number":59,"context_line":"                                     \u00272\u0027: \u0027igmp\u0027,"},{"line_number":60,"context_line":"                                     \u00273\u0027: \u0027ggp\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_5341d10a","line":57,"updated":"2017-12-05 19:28:50.000000000","message":"could you please explain, in a comment here, how do you generate the list? it\u0027s not exactly clear from just reading the code why e.g. 27 is in the list but 28 is not. I assume that\u0027s because iptables shows a string representation for the former but not the latter, but it would be nice to have captured in code.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"# of known protocol numbers that require a name to be used, because"},{"line_number":55,"context_line":"# that is how iptables-save will display them."},{"line_number":56,"context_line":"# Protocol \u00270\u0027 uses no -p argument."},{"line_number":57,"context_line":"IPTABLES_PROTOCOL_NUM_TO_NAME_MAP \u003d {\u00270\u0027: None,"},{"line_number":58,"context_line":"                                     \u00271\u0027: \u0027icmp\u0027,"},{"line_number":59,"context_line":"                                     \u00272\u0027: \u0027igmp\u0027,"},{"line_number":60,"context_line":"                                     \u00273\u0027: \u0027ggp\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_712388be","line":57,"in_reply_to":"df87a7cf_5341d10a","updated":"2017-12-07 01:43:44.000000000","message":"Right, it was:\n\nfor num in {0..255}; do iptables -A INPUT -p $num; done\n# iptables-save\n\nI\u0027ll add it.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"143355dd223d4af52c17f2d24daf576f6244794e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                              lib_constants.PROTO_NAME_IPV6_ICMP_LEGACY:"},{"line_number":117,"context_line":"                                  \u0027ipv6-icmp\u0027,"},{"line_number":118,"context_line":"                              lib_constants.PROTO_NAME_PGM: \u0027113\u0027}"},{"line_number":119,"context_line":"IPTABLES_PROTOCOL_NAME_MAP.update(IPTABLES_PROTOCOL_NUM_TO_NAME_MAP)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"# Timeout in seconds for getting an IPv6 LLA"},{"line_number":122,"context_line":"LLA_TASK_TIMEOUT \u003d 40"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_33f44dcf","line":119,"updated":"2017-12-05 19:28:50.000000000","message":"what\u0027s the reason to have two dictionaries and then merge them, instead of one dict? I don\u0027t see where IPTABLES_PROTOCOL_NUM_TO_NAME_MAP is used except in this line.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3c5690ebe4c9c9fcd6a6d7bd112f0abe4e44481f","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                              lib_constants.PROTO_NAME_IPV6_ICMP_LEGACY:"},{"line_number":117,"context_line":"                                  \u0027ipv6-icmp\u0027,"},{"line_number":118,"context_line":"                              lib_constants.PROTO_NAME_PGM: \u0027113\u0027}"},{"line_number":119,"context_line":"IPTABLES_PROTOCOL_NAME_MAP.update(IPTABLES_PROTOCOL_NUM_TO_NAME_MAP)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"# Timeout in seconds for getting an IPv6 LLA"},{"line_number":122,"context_line":"LLA_TASK_TIMEOUT \u003d 40"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_743ff6b3","line":119,"in_reply_to":"df87a7cf_33f44dcf","updated":"2017-12-07 01:43:44.000000000","message":"Just because one was only numbers and the other names, but i\u0027ll put them all together.","commit_id":"4ddc6b074f95c6235aecf81bb1b5e2ed187cd9b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"04160b2b2ad78b5caaeee2e5e5779bea095f15c2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# When using iptables-save we specify \u0027-p {proto}\u0027,"},{"line_number":52,"context_line":"# but sometimes those values are not identical.  This is a map"},{"line_number":53,"context_line":"# of known protocol numbers that require a name to be used, or"},{"line_number":54,"context_line":"# a protocol name that requires a number or non-mathing string,"},{"line_number":55,"context_line":"# because that is how iptables-save will display them."},{"line_number":56,"context_line":"#"},{"line_number":57,"context_line":"# This is how the list was created, so there is a possibility"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_ba37a54d","line":54,"range":{"start_line":54,"start_character":48,"end_line":54,"end_character":55},"updated":"2017-12-07 04:20:02.000000000","message":"s/matching :(","commit_id":"7cbbcf8571595f3a2e7ab32c6c99352b60e2a492"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e0804d89c7c26d467358efdcc0ca9bca8bc365e9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"# - \u0027ipv6-encap\u0027 uses \u0027ipv6\u0027"},{"line_number":66,"context_line":"# - \u0027icmpv6\u0027 uses \u0027ipv6-icmp\u0027"},{"line_number":67,"context_line":"# - \u0027pgm\u0027 uses \u0027113\u0027 instead of its name"},{"line_number":68,"context_line":"IPTABLES_PROTOCOL_NAME_MAP \u003d {lib_constants.PROTO_NAME_IPV6_ENCAP: \u0027ipv6\u0027,"},{"line_number":69,"context_line":"                              lib_constants.PROTO_NAME_IPV6_ICMP_LEGACY:"},{"line_number":70,"context_line":"                                  \u0027ipv6-icmp\u0027,"},{"line_number":71,"context_line":"                              lib_constants.PROTO_NAME_PGM: \u0027113\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_22d908f2","line":68,"updated":"2017-12-08 08:35:25.000000000","message":"Where is this list coming from? Do we have something to compare with?","commit_id":"ec535fa575e1b59175229623ebeb6827970f9a37"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6e9d9f29208ed5484df68824f4fa7778ee9771a5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"# - \u0027ipv6-encap\u0027 uses \u0027ipv6\u0027"},{"line_number":66,"context_line":"# - \u0027icmpv6\u0027 uses \u0027ipv6-icmp\u0027"},{"line_number":67,"context_line":"# - \u0027pgm\u0027 uses \u0027113\u0027 instead of its name"},{"line_number":68,"context_line":"IPTABLES_PROTOCOL_NAME_MAP \u003d {lib_constants.PROTO_NAME_IPV6_ENCAP: \u0027ipv6\u0027,"},{"line_number":69,"context_line":"                              lib_constants.PROTO_NAME_IPV6_ICMP_LEGACY:"},{"line_number":70,"context_line":"                                  \u0027ipv6-icmp\u0027,"},{"line_number":71,"context_line":"                              lib_constants.PROTO_NAME_PGM: \u0027113\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_447f6e14","line":68,"in_reply_to":"df87a7cf_22d908f2","updated":"2017-12-08 17:41:29.000000000","message":"The two icmp values were just learned by fire when we noticed the iptables rules were not converging.\n\n--\u003e iptables -A INPUT -p ipv6-encap\niptables v1.6.0: unknown protocol \"ipv6-encap\" specified\nTry `iptables -h\u0027 or \u0027iptables --help\u0027 for more information.\n\n--\u003e iptables -A INPUT -p icmpv6\n--\u003e iptables-save | grep icmp\n-A INPUT -p ipv6-icmp\n\nI\u0027ll put a small comment.","commit_id":"ec535fa575e1b59175229623ebeb6827970f9a37"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e0804d89c7c26d467358efdcc0ca9bca8bc365e9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                              \u0027103\u0027: \u0027pim\u0027,"},{"line_number":112,"context_line":"                              \u0027108\u0027: \u0027ipcomp\u0027,"},{"line_number":113,"context_line":"                              \u0027112\u0027: \u0027vrrp\u0027,"},{"line_number":114,"context_line":"                              \u0027115\u0027: \u0027lt2p\u0027,"},{"line_number":115,"context_line":"                              \u0027124\u0027: \u0027isis\u0027,"},{"line_number":116,"context_line":"                              \u0027132\u0027: \u0027sctp\u0027,"},{"line_number":117,"context_line":"                              \u0027133\u0027: \u0027fc\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_2254a852","line":114,"range":{"start_line":114,"start_character":38,"end_line":114,"end_character":42},"updated":"2017-12-08 08:35:25.000000000","message":"I know this is a copy from previous list but isn\u0027t it l2tp ?","commit_id":"ec535fa575e1b59175229623ebeb6827970f9a37"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6e9d9f29208ed5484df68824f4fa7778ee9771a5","unresolved":false,"context_lines":[{"line_number":111,"context_line":"                              \u0027103\u0027: \u0027pim\u0027,"},{"line_number":112,"context_line":"                              \u0027108\u0027: \u0027ipcomp\u0027,"},{"line_number":113,"context_line":"                              \u0027112\u0027: \u0027vrrp\u0027,"},{"line_number":114,"context_line":"                              \u0027115\u0027: \u0027lt2p\u0027,"},{"line_number":115,"context_line":"                              \u0027124\u0027: \u0027isis\u0027,"},{"line_number":116,"context_line":"                              \u0027132\u0027: \u0027sctp\u0027,"},{"line_number":117,"context_line":"                              \u0027133\u0027: \u0027fc\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_a1118c06","line":114,"range":{"start_line":114,"start_character":38,"end_line":114,"end_character":42},"in_reply_to":"df87a7cf_2254a852","updated":"2017-12-08 17:41:29.000000000","message":"Done","commit_id":"ec535fa575e1b59175229623ebeb6827970f9a37"}],"neutron/tests/unit/agent/linux/test_iptables_firewall.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9d44c78fa3ea757ff390fff294be04b06ac97569","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                                     comment\u003dNone)"},{"line_number":421,"context_line":"        egress \u003d None"},{"line_number":422,"context_line":"        self._test_prepare_port_filter(rule, ingress, egress)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_filter_ipv4_egress(self):"},{"line_number":425,"context_line":"        rule \u003d {\u0027ethertype\u0027: \u0027IPv4\u0027,"},{"line_number":426,"context_line":"                \u0027direction\u0027: \u0027egress\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_308f3176","line":423,"updated":"2017-12-07 10:16:00.000000000","message":"Missing a test where protocol is \u00270\u0027.","commit_id":"82eb79fe68cb8d8de338a2c8c0c9634dea7f5ee6"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ef3ec3189b8f537178444a4fc5b178ee56ffcba0","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                                     comment\u003dNone)"},{"line_number":421,"context_line":"        egress \u003d None"},{"line_number":422,"context_line":"        self._test_prepare_port_filter(rule, ingress, egress)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_filter_ipv4_egress(self):"},{"line_number":425,"context_line":"        rule \u003d {\u0027ethertype\u0027: \u0027IPv4\u0027,"},{"line_number":426,"context_line":"                \u0027direction\u0027: \u0027egress\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_eedfa637","line":423,"in_reply_to":"df87a7cf_308f3176","updated":"2017-12-07 12:03:40.000000000","message":"I noticed the 0 was in that dict before so maybe this is not relevant to this patch.","commit_id":"82eb79fe68cb8d8de338a2c8c0c9634dea7f5ee6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0dce7778fbda83a0ce5048409ce45fb3f40835f3","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                                     comment\u003dNone)"},{"line_number":421,"context_line":"        egress \u003d None"},{"line_number":422,"context_line":"        self._test_prepare_port_filter(rule, ingress, egress)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def test_filter_ipv4_egress(self):"},{"line_number":425,"context_line":"        rule \u003d {\u0027ethertype\u0027: \u0027IPv4\u0027,"},{"line_number":426,"context_line":"                \u0027direction\u0027: \u0027egress\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_81b6df3d","line":423,"in_reply_to":"df87a7cf_eedfa637","updated":"2017-12-07 20:38:49.000000000","message":"I\u0027ll test it and add it, thanks!","commit_id":"82eb79fe68cb8d8de338a2c8c0c9634dea7f5ee6"}]}
