)]}'
{"neutron/agent/l3_agent.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"83671a8ce1d4d941cf0730c26a57e82cc7b9652b","unresolved":false,"context_lines":[{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def _send_gratuitous_arp_packet(self, ns_name, interface_name, ip_address,"},{"line_number":1008,"context_line":"                                    distributed\u003dFalse):"},{"line_number":1009,"context_line":"        if (netaddr.IPAddress(ip_address).version \u003d\u003d 4 and"},{"line_number":1010,"context_line":"            self.conf.send_arp_for_ha \u003e 0):"},{"line_number":1011,"context_line":"            eventlet.spawn_n(self._arping, ns_name, interface_name, ip_address,"},{"line_number":1012,"context_line":"                             distributed)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac7a964_9b20214b","line":1009,"updated":"2014-08-15 15:47:04.000000000","message":"what about IPv6?","commit_id":"98712826dcd9f76a8ffbeb5ee04d6033759a935c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8f0678ae4b495197f453b1f6c6b7a6aaf611d5a8","unresolved":false,"context_lines":[{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def _send_gratuitous_arp_packet(self, ns_name, interface_name, ip_address,"},{"line_number":1008,"context_line":"                                    distributed\u003dFalse):"},{"line_number":1009,"context_line":"        if (netaddr.IPAddress(ip_address).version \u003d\u003d 4 and"},{"line_number":1010,"context_line":"            self.conf.send_arp_for_ha \u003e 0):"},{"line_number":1011,"context_line":"            eventlet.spawn_n(self._arping, ns_name, interface_name, ip_address,"},{"line_number":1012,"context_line":"                             distributed)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac7a964_3168fef4","line":1009,"in_reply_to":"7ac7a964_85dc30e6","updated":"2014-08-16 00:15:46.000000000","message":"I think this might the best place to put it, seeing the ways to get here:\n\n  L3NATAgent  (5 usages found)\n      _external_gateway_added  (1 usage found)\n          (1156: 14) self._send_gratuitous_arp_packet(ns_name,\n      _internal_network_added  (1 usage found)\n          (1281: 14) self._send_gratuitous_arp_packet(ns_name, interface_name, ip_address)\n      agent_gateway_added  (1 usage found)\n          (1175: 14) self._send_gratuitous_arp_packet(ns_name, interface_name, ip_address)\n      floating_ip_added_dist  (1 usage found)\n          (1417: 14) self._send_gratuitous_arp_packet(fip_ns_name,\n      process_router_floating_ip_addresses  (1 usage found)\n          (969: 26) self._send_gratuitous_arp_packet(","commit_id":"98712826dcd9f76a8ffbeb5ee04d6033759a935c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f350a72d7c09bb2b9702a480df59a767c7ead49d","unresolved":false,"context_lines":[{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def _send_gratuitous_arp_packet(self, ns_name, interface_name, ip_address,"},{"line_number":1008,"context_line":"                                    distributed\u003dFalse):"},{"line_number":1009,"context_line":"        if (netaddr.IPAddress(ip_address).version \u003d\u003d 4 and"},{"line_number":1010,"context_line":"            self.conf.send_arp_for_ha \u003e 0):"},{"line_number":1011,"context_line":"            eventlet.spawn_n(self._arping, ns_name, interface_name, ip_address,"},{"line_number":1012,"context_line":"                             distributed)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ac7a964_85dc30e6","line":1009,"in_reply_to":"7ac7a964_9b20214b","updated":"2014-08-15 21:32:25.000000000","message":"I\u0027m wondering if the caller of this, process_router_floating_ip_addresses() (?), should be the one to change, since it shouldn\u0027t have been called with an IPv6 address.  Do you have a backtrace?","commit_id":"98712826dcd9f76a8ffbeb5ee04d6033759a935c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"df5d2815f9e4788233f3bf1217571e792134d5cf","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        if distributed:"},{"line_number":1005,"context_line":"            device.addr.delete(net.version, ip_cidr)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def _ping6(self, ns_name, interface_name, ip_address):"},{"line_number":1008,"context_line":"        ping6_cmd \u003d [\u0027ping6\u0027, \u0027-I\u0027, interface_name,"},{"line_number":1009,"context_line":"                     \u0027-c\u0027, self.conf.send_arp_for_ha,"},{"line_number":1010,"context_line":"                     ip_address]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_cfcace4e","line":1007,"updated":"2014-08-19 16:40:36.000000000","message":"This isn\u0027t doing the same thing as _arping(), so isn\u0027t appropriate here.\n\nping6 is going to send a Neighbour Solicitation (where are you?), not a Neighbour Advertisement (I am here).\n\n_arping() is sending an ARP REPLY (I am here), not an ARP REQUEST (where are you?).  It is doing this because we are (typically) adding a floating IP for NAT, and need to advertise the IP has been configured.\n\nThere is no equivalent command to send a Neighbour Advertisement, it will simply be done when Duplicate Address Detection is run.","commit_id":"d7ac638f9dfa421ae4c6413296c6a8473d4e99a7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"fd34336c9c80c7c78656ff69ef7c5c86b4dd8074","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        if distributed:"},{"line_number":1005,"context_line":"            device.addr.delete(net.version, ip_cidr)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def _ping6(self, ns_name, interface_name, ip_address):"},{"line_number":1008,"context_line":"        ping6_cmd \u003d [\u0027ping6\u0027, \u0027-I\u0027, interface_name,"},{"line_number":1009,"context_line":"                     \u0027-c\u0027, self.conf.send_arp_for_ha,"},{"line_number":1010,"context_line":"                     ip_address]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_c5b7f8d6","line":1007,"in_reply_to":"1abeadc6_7a6ebf97","updated":"2014-08-20 07:04:03.000000000","message":"Looks like ndsend is more appropriate for our purpose here. \n\nhttp://manpages.ubuntu.com/manpages/oneiric/man8/ndsend.8.html\n\nHowever, it\u0027s for ubuntu system and how can we send unsolicited neighbor advertisement for other linux distributions?","commit_id":"d7ac638f9dfa421ae4c6413296c6a8473d4e99a7"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"db8a0f95cdd592c4dc6b8ff143007c6631a97bb3","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"        if distributed:"},{"line_number":1005,"context_line":"            device.addr.delete(net.version, ip_cidr)"},{"line_number":1006,"context_line":""},{"line_number":1007,"context_line":"    def _ping6(self, ns_name, interface_name, ip_address):"},{"line_number":1008,"context_line":"        ping6_cmd \u003d [\u0027ping6\u0027, \u0027-I\u0027, interface_name,"},{"line_number":1009,"context_line":"                     \u0027-c\u0027, self.conf.send_arp_for_ha,"},{"line_number":1010,"context_line":"                     ip_address]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7a6ebf97","line":1007,"in_reply_to":"1abeadc6_cfcace4e","updated":"2014-08-20 06:01:52.000000000","message":"On https://bugs.launchpad.net/neutron/+bug/1357068, kbringard suggested to use ndisc6, which is a replacement to arping in IPv4 world, to send out neighbor discovery. I am going to test it out.","commit_id":"d7ac638f9dfa421ae4c6413296c6a8473d4e99a7"}]}
