)]}'
{"networking_bagpipe/bagpipe_bgp/vpn/ipvpn/mpls_ovs_dataplane.py":[{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"85083c5e0b2ee230aa918b9a8ccfdf776f4ca9a2","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        return (port, localport_match, push_vlan_action, port_unplug_action)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    def get_vlan_action(self):"},{"line_number":416,"context_line":"        vlan_action \u003d \"\""},{"line_number":417,"context_line":"        if self.push_vlan_action:"},{"line_number":418,"context_line":"            vlan_action \u003d self.push_vlan_action"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"        return vlan_action"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    @log_decorator.log_info"},{"line_number":423,"context_line":"    def update_fallback(self, fallback\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_b6f1d76d","line":420,"range":{"start_line":416,"start_character":0,"end_line":420,"end_character":26},"updated":"2017-10-25 15:38:21.000000000","message":"shorter:\n\n   return self.push_vlan_action if self.push_vlan_action else \"\"","commit_id":"f513d2746f4f1b88a0d1229fd427c4fc46b47c26"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"85083c5e0b2ee230aa918b9a8ccfdf776f4ca9a2","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            return"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        self._ovs_flow_add("},{"line_number":452,"context_line":"            self._vrf_match(\u0027dl_dst\u003dff:ff:ff:ff:ff:ff\u0027, proto\u003d\u0027arp\u0027),"},{"line_number":453,"context_line":"            \u0027move:NXM_OF_ETH_SRC[]-\u003eNXM_OF_ETH_DST[],\u0027"},{"line_number":454,"context_line":"            \u0027mod_dl_src:%(mac)s,\u0027"},{"line_number":455,"context_line":"            \u0027load:0x2-\u003eNXM_OF_ARP_OP[],\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_5637434e","line":452,"range":{"start_line":452,"start_character":0,"end_line":452,"end_character":69},"updated":"2017-10-25 15:38:21.000000000","message":"we should only  match ARP requests here I think","commit_id":"f513d2746f4f1b88a0d1229fd427c4fc46b47c26"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"85083c5e0b2ee230aa918b9a8ccfdf776f4ca9a2","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        self._ovs_flow_add("},{"line_number":452,"context_line":"            self._vrf_match(\u0027dl_dst\u003dff:ff:ff:ff:ff:ff\u0027, proto\u003d\u0027arp\u0027),"},{"line_number":453,"context_line":"            \u0027move:NXM_OF_ETH_SRC[]-\u003eNXM_OF_ETH_DST[],\u0027"},{"line_number":454,"context_line":"            \u0027mod_dl_src:%(mac)s,\u0027"},{"line_number":455,"context_line":"            \u0027load:0x2-\u003eNXM_OF_ARP_OP[],\u0027"},{"line_number":456,"context_line":"            \u0027move:NXM_NX_ARP_SHA[]-\u003eNXM_NX_ARP_THA[],\u0027"},{"line_number":457,"context_line":"            \u0027move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[],\u0027"},{"line_number":458,"context_line":"            \u0027load:%(mac)#x-\u003eNXM_NX_ARP_SHA[],\u0027"},{"line_number":459,"context_line":"            \u0027load:%(ip)#x-\u003eNXM_OF_ARP_SPA[],\u0027"},{"line_number":460,"context_line":"            \u0027%(vlan_action)soutput:%(in_port)d\u0027 %"},{"line_number":461,"context_line":"            {\u0027mac\u0027: netaddr.EUI(GATEWAY_MAC, dialect\u003dnetaddr.mac_unix),"},{"line_number":462,"context_line":"             \u0027ip\u0027: netaddr.IPAddress(self.gateway_ip),"},{"line_number":463,"context_line":"             \u0027vlan_action\u0027: self.get_vlan_action(), \u0027in_port\u0027: ovs_port},"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_366e072f","line":460,"range":{"start_line":453,"start_character":11,"end_line":460,"end_character":47},"updated":"2017-10-25 15:38:21.000000000","message":"Could we use the formating constant in br_tun ?\n\nhttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/plugins/ml2/drivers/openvswitch/agent/common/constants.py#n113","commit_id":"f513d2746f4f1b88a0d1229fd427c4fc46b47c26"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"85083c5e0b2ee230aa918b9a8ccfdf776f4ca9a2","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    @log_decorator.log_info"},{"line_number":467,"context_line":"    def remove_arp_responder(self, last_endpoint):"},{"line_number":468,"context_line":"        if not last_endpoint:"},{"line_number":469,"context_line":"            return"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self._ovs_flow_del("},{"line_number":472,"context_line":"            self._vrf_match(None, proto\u003d\u0027arp\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_b6631742","line":469,"range":{"start_line":468,"start_character":0,"end_line":469,"end_character":18},"updated":"2017-10-25 15:38:21.000000000","message":"would be more readable if the test was done in vif_unplugged","commit_id":"f513d2746f4f1b88a0d1229fd427c4fc46b47c26"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"85083c5e0b2ee230aa918b9a8ccfdf776f4ca9a2","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                               self.driver.input_table)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"        if self.driver.proxy_arp:"},{"line_number":540,"context_line":"            # Map ARP and IP traffic from ARP/GW netns to plugged port"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"            # Map IP traffic from gateway to plugged port"},{"line_number":543,"context_line":"            self._ovs_flow_add("},{"line_number":544,"context_line":"                join_s(\u0027in_port\u003d%s\u0027 % self.arp_net_nsport,"},{"line_number":545,"context_line":"                       \u0027ip\u0027,"},{"line_number":546,"context_line":"                       \u0027nw_dst\u003d%s\u0027 % ip_address),"},{"line_number":547,"context_line":"                \u0027%soutput:%s\u0027 % (push_vlan_action_str, ovs_port),"},{"line_number":548,"context_line":"                self.driver.input_table)"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"            # ARP"},{"line_number":551,"context_line":"            self._ovs_flow_add("},{"line_number":552,"context_line":"                join_s(\u0027in_port\u003d%s\u0027 % self.arp_net_nsport,"},{"line_number":553,"context_line":"                       \u0027arp\u0027,"},{"line_number":554,"context_line":"                       \u0027dl_dst\u003d%s\u0027 % mac_address),"},{"line_number":555,"context_line":"                \u0027%soutput:%s\u0027 % (push_vlan_action_str, ovs_port),"},{"line_number":556,"context_line":"                self.driver.input_table)"},{"line_number":557,"context_line":"        else:"},{"line_number":558,"context_line":"            self.setup_arp_responder(ovs_port)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        # Map incoming MPLS traffic going to the VM port"},{"line_number":561,"context_line":"        incoming_actions \u003d (\"%smod_dl_src:%s,mod_dl_dst:%s,output:%s\" %"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_56a18345","line":558,"range":{"start_line":540,"start_character":0,"end_line":558,"end_character":46},"updated":"2017-10-25 15:38:21.000000000","message":"We can/should do this in a simpler way: let\u0027s completely remove the netns-based ARP proxy, and keep the proxy_arp setting to control the new OVS-based implementation.","commit_id":"f513d2746f4f1b88a0d1229fd427c4fc46b47c26"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"2ded75746f793210033459fbc274c3f1e4505a15","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        )"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        self._ovs_flow_add("},{"line_number":292,"context_line":"            self._vrf_match(\u0027dl_dst\u003dff:ff:ff:ff:ff:ff,NXM_OF_ARP_OP[]\u003d0x1\u0027,"},{"line_number":293,"context_line":"                            proto\u003d\u0027arp\u0027),"},{"line_number":294,"context_line":"            new_actions % {"},{"line_number":295,"context_line":"                \u0027mac\u0027: netaddr.EUI(GATEWAY_MAC, dialect\u003dnetaddr.mac_unix),"},{"line_number":296,"context_line":"                \u0027ip\u0027: netaddr.IPAddress(self.gateway_ip),"},{"line_number":297,"context_line":"                \u0027vlan_action\u0027: self.get_vlan_action(),"},{"line_number":298,"context_line":"                \u0027in_port\u0027: ovs_port"},{"line_number":299,"context_line":"            },"},{"line_number":300,"context_line":"            self.driver.vrf_table)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    @log_decorator.log_info"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_c61a30c4","line":299,"range":{"start_line":292,"start_character":0,"end_line":299,"end_character":14},"updated":"2017-10-27 07:23:48.000000000","message":"I\u0027m realizing that with this responder we are not exactly providing the same feature as the one provided with the netns based ARP proxy with proxy_arp_pvlan .\n\nTo provided the same feature and avoid breaking deployments that would use that, we could reply to ARP request for any IP address, not only for the gateway IP.\n\nTo do that, since we need a \"move\" instead of a \"load\" for ARP_SHA:\n\n   move:NXM_OF_ARP_TPA[]-\u003eNXM_OF_ARP_SPA[],\n\ninstead of \n  \n   load:%(ip)#x-\u003eNXM_OF_ARP_SPA[]\n\nBut since we already do, two lines before, this move...\n\n   move:NXM_OF_ARP_SPA[]-\u003eNXM_OF_ARP_TPA[],\n\n...this can\u0027t be as simple as that.\n\nTo exchange the value of TPA and SPA we need to store of of the two somewhere else. A register can possibly be used for this purpose.\n\nOf course, doing that, we can\u0027t reuse the ARP_RESPONDER_ACTIONS anymore... \n\n[ Thinking about it, the way the rule is formulated in PS1/PS2 is that an ARP reply(gw_ip, gateway_mac) would be produced for any ARP request, even for a request for another IP (the match was not restricted to ARP requests for the gateway IP. This would be wrong to keep as is. ]","commit_id":"7b1f6fa348d8d3e971a2941dab43cc9a7fdcd0c7"}]}
