)]}'
{"dragonflow/controller/dhcp_app.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"636ce950ffb4d6890e8df153428e6e3064ade3db","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        dns \u003d self._get_dns_address_list_bin(subnet)"},{"line_number":162,"context_line":"        host_routes \u003d self._get_host_routes_list_bin(subnet, lport)"},{"line_number":163,"context_line":"        dhcp_server_address \u003d self._get_dhcp_server_address(subnet)"},{"line_number":164,"context_line":"        gateway_address \u003d self._get_port_gateway_address(subnet).packed"},{"line_number":165,"context_line":"        netmask_bin \u003d self._get_port_netmask(subnet).packed"},{"line_number":166,"context_line":"        domain_name_bin \u003d struct.pack(\u0027!256s\u0027, self.domain_name)"},{"line_number":167,"context_line":"        lease_time_bin \u003d struct.pack(\u0027!I\u0027, self.lease_time)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_0624cd5d","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":71},"updated":"2016-12-06 07:50:51.000000000","message":"What if subnet don\u0027t have gateway ip? The original code handle this case.","commit_id":"064002a981fe58a6b613782b8da7a95a6939bb7e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"982555431c803441c9972369baa544d2f40eb74f","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        dns \u003d self._get_dns_address_list_bin(subnet)"},{"line_number":162,"context_line":"        host_routes \u003d self._get_host_routes_list_bin(subnet, lport)"},{"line_number":163,"context_line":"        dhcp_server_address \u003d self._get_dhcp_server_address(subnet)"},{"line_number":164,"context_line":"        gateway_address \u003d self._get_port_gateway_address(subnet).packed"},{"line_number":165,"context_line":"        netmask_bin \u003d self._get_port_netmask(subnet).packed"},{"line_number":166,"context_line":"        domain_name_bin \u003d struct.pack(\u0027!256s\u0027, self.domain_name)"},{"line_number":167,"context_line":"        lease_time_bin \u003d struct.pack(\u0027!I\u0027, self.lease_time)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a71b18c_8c08ff29","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":71},"in_reply_to":"3a71b18c_0624cd5d","updated":"2016-12-06 08:09:26.000000000","message":"While possible, it will cause exception in _get_port_gateway_address. Will fix.","commit_id":"064002a981fe58a6b613782b8da7a95a6939bb7e"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"608a560ad43c41e2374139c755ea5ade03fa0ffb","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            LOG.exception(_LE(\"Unable to handle packet %s\"), msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _handle_dhcp_request(self, msg, pkt, lport):"},{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_b34f9990","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":49},"updated":"2016-12-07 11:45:22.000000000","message":"Isn\u0027t this pkt?","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5360dd541fc297c87b4df83b594b9a6d935996eb","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            LOG.exception(_LE(\"Unable to handle packet %s\"), msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _handle_dhcp_request(self, msg, pkt, lport):"},{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_167b3f29","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":49},"in_reply_to":"3a71b18c_1eaaf170","updated":"2016-12-11 16:11:07.000000000","message":"Done","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"24a428cc1f16112654238c53a1541d2238383730","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            LOG.exception(_LE(\"Unable to handle packet %s\"), msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _handle_dhcp_request(self, msg, pkt, lport):"},{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_1eaaf170","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":49},"in_reply_to":"3a71b18c_b34f9990","updated":"2016-12-08 01:31:21.000000000","message":"+1, this is the duplicating code from legacy. msg might be removed from param list.","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"608a560ad43c41e2374139c755ea5ade03fa0ffb","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _handle_dhcp_request(self, msg, pkt, lport):"},{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"},{"line_number":117,"context_line":"            dhcp_packet \u003d dhcp.dhcp.parser(packet[3])[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_93653d1f","line":114,"range":{"start_line":114,"start_character":8,"end_line":114,"end_character":42},"updated":"2016-12-07 11:45:22.000000000","message":"this was already matched and called ofport above","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5360dd541fc297c87b4df83b594b9a6d935996eb","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _handle_dhcp_request(self, msg, pkt, lport):"},{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"},{"line_number":117,"context_line":"            dhcp_packet \u003d dhcp.dhcp.parser(packet[3])[0]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_3674bb34","line":114,"range":{"start_line":114,"start_character":8,"end_line":114,"end_character":42},"in_reply_to":"3a71b18c_93653d1f","updated":"2016-12-11 16:11:07.000000000","message":"Done","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"24a428cc1f16112654238c53a1541d2238383730","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"},{"line_number":117,"context_line":"            dhcp_packet \u003d dhcp.dhcp.parser(packet[3])[0]"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            dhcp_packet \u003d packet[3]"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        dhcp_message_type \u003d self._get_dhcp_message_type_opt(dhcp_packet)"},{"line_number":122,"context_line":"        send_packet \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_be01fd3b","line":119,"range":{"start_line":116,"start_character":0,"end_line":119,"end_character":35},"updated":"2016-12-08 01:31:21.000000000","message":"can we just get the dhcp packet from pkt?","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5360dd541fc297c87b4df83b594b9a6d935996eb","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        packet \u003d ryu_packet.Packet(data\u003dmsg.data)"},{"line_number":114,"context_line":"        in_port \u003d msg.match.get(\"in_port\")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        if isinstance(packet[3], str):"},{"line_number":117,"context_line":"            dhcp_packet \u003d dhcp.dhcp.parser(packet[3])[0]"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            dhcp_packet \u003d packet[3]"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        dhcp_message_type \u003d self._get_dhcp_message_type_opt(dhcp_packet)"},{"line_number":122,"context_line":"        send_packet \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_56713743","line":119,"range":{"start_line":116,"start_character":0,"end_line":119,"end_character":35},"in_reply_to":"3a71b18c_be01fd3b","updated":"2016-12-11 16:11:07.000000000","message":"Done","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"608a560ad43c41e2374139c755ea5ade03fa0ffb","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            self._send_packet(self.get_datapath(), in_port, send_packet)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _create_dhcp_packet(self, pkt, dhcp_packet, pkt_type, lport):"},{"line_number":151,"context_line":"        pkt_ipv4 \u003d pkt.get_protocol(ipv4.ipv4)"},{"line_number":152,"context_line":"        pkt_ethernet \u003d pkt.get_protocol(ethernet.ethernet)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        subnet \u003d self._get_subnet_by_port(lport)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_7300a102","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":46},"updated":"2016-12-07 11:45:22.000000000","message":"this was already parsed to pkt_ip","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"24a428cc1f16112654238c53a1541d2238383730","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            self._send_packet(self.get_datapath(), in_port, send_packet)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _create_dhcp_packet(self, pkt, dhcp_packet, pkt_type, lport):"},{"line_number":151,"context_line":"        pkt_ipv4 \u003d pkt.get_protocol(ipv4.ipv4)"},{"line_number":152,"context_line":"        pkt_ethernet \u003d pkt.get_protocol(ethernet.ethernet)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        subnet \u003d self._get_subnet_by_port(lport)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_7e59258e","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":46},"in_reply_to":"3a71b18c_7300a102","updated":"2016-12-08 01:31:21.000000000","message":"I think the current code is ok. The parse will only be done in constructing ryu_packet.Packet. Here, pkt_ipv4 is just retrieved from a list.","commit_id":"ce72671dc865876b3b6b22fb243fb71c37644d9c"}]}
