)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"68bc92e8b67cd4539098a8d1bc63bf6c74091270","unresolved":false,"context_lines":[{"line_number":9,"context_line":"(instead of broadcast)"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I0e56fc0658c6135111b588d78d63b57fc2dc6b0e"},{"line_number":12,"context_line":"Closes-Bug:1716933"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"df87a7cf_0c35a4da","line":12,"range":{"start_line":12,"start_character":11,"end_line":12,"end_character":18},"updated":"2017-12-03 12:39:42.000000000","message":"I think this needs to be 1703168 :) [1]\n\n[1] https://bugs.launchpad.net/dragonflow/+bug/1703168","commit_id":"561104cbc1990651d6696989ff9f760033211e26"}],"dragonflow/controller/apps/dhcp.py":[{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"6926105730f950f6874adc12d33ab2176f7c9abe","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.api.register_table_handler(const.DHCP_TABLE,"},{"line_number":65,"context_line":"                                        self.packet_in_handler)"},{"line_number":66,"context_line":"        self._dhcp_ip_by_subnet \u003d {}"},{"line_number":67,"context_line":"        self._dhcp_lport_by_network_id \u003d {}"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def switch_features_handler(self, ev):"},{"line_number":70,"context_line":"        self._install_dhcp_packet_match_flow()"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f485f77_43d62652","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":38},"updated":"2017-11-09 06:52:21.000000000","message":"Why keep it here?\nYou have it in dhcp_module, isn\u0027t it accessible from here?","commit_id":"398c9a2ac70ef525b4efb9fed394570cf9fee36b"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"083c5754fbf4567a04533bee4a424cc3a39e14af","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.api.register_table_handler(const.DHCP_TABLE,"},{"line_number":65,"context_line":"                                        self.packet_in_handler)"},{"line_number":66,"context_line":"        self._dhcp_ip_by_subnet \u003d {}"},{"line_number":67,"context_line":"        self._dhcp_lport_by_network_id \u003d {}"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def switch_features_handler(self, ev):"},{"line_number":70,"context_line":"        self._install_dhcp_packet_match_flow()"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f485f77_c320d6b3","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":38},"in_reply_to":"1f485f77_43d62652","updated":"2017-11-09 07:30:42.000000000","message":"It\u0027s a cache in the app for past lookup for the port - \nThe Dhcp-module run\u0027s in the in the neutron-server","commit_id":"398c9a2ac70ef525b4efb9fed394570cf9fee36b"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"be2866d2394338112e9462837844f6e079be082d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.api.register_table_handler(const.DHCP_TABLE,"},{"line_number":65,"context_line":"                                        self.packet_in_handler)"},{"line_number":66,"context_line":"        self._dhcp_ip_by_subnet \u003d {}"},{"line_number":67,"context_line":"        self._dhcp_lport_by_network_id \u003d {}"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def switch_features_handler(self, ev):"},{"line_number":70,"context_line":"        self._install_dhcp_packet_match_flow()"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f485f77_e602c03e","line":67,"range":{"start_line":67,"start_character":8,"end_line":67,"end_character":38},"in_reply_to":"1f485f77_c320d6b3","updated":"2017-11-12 13:47:54.000000000","message":"OK. thanks for clarifying.","commit_id":"398c9a2ac70ef525b4efb9fed394570cf9fee36b"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"1c4aeb99ca971b9f3473bcb6552dedf2e1928bb3","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        if lport.device_owner !\u003d n_const.DEVICE_OWNER_DHCP:"},{"line_number":463,"context_line":"            return"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        v4_ips \u003d set(ip for ip in lport.ips if ip.version \u003d\u003d 4)"},{"line_number":466,"context_line":"        v4_old_ips \u003d set(ip for ip in orig_lport.ips if ip.version \u003d\u003d 4)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        if v4_ips !\u003d v4_old_ips or lport.mac !\u003d orig_lport.mac:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1f485f77_a6496861","line":465,"range":{"start_line":465,"start_character":17,"end_line":465,"end_character":63},"updated":"2017-11-09 11:46:12.000000000","message":"nit: you\u0027re doing it several times over the code, I suggest factoring it out","commit_id":"398c9a2ac70ef525b4efb9fed394570cf9fee36b"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"1c4aeb99ca971b9f3473bcb6552dedf2e1928bb3","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        dhcp_response.add_protocol(ethernet.ethernet("},{"line_number":179,"context_line":"                                                ethertype\u003dether.ETH_TYPE_IP,"},{"line_number":180,"context_line":"                                                dst\u003dpkt_ethernet.src,"},{"line_number":181,"context_line":"                                                src\u003ddhcp_port.mac))"},{"line_number":182,"context_line":"        dhcp_response.add_protocol(ipv4.ipv4(dst\u003dpkt_ipv4.src,"},{"line_number":183,"context_line":"                                             src\u003ddhcp_server_address,"},{"line_number":184,"context_line":"                                             proto\u003dpkt_ipv4.proto))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f485f77_12399240","line":181,"range":{"start_line":181,"start_character":52,"end_line":181,"end_character":61},"updated":"2017-11-09 11:46:12.000000000","message":"This port is stored in the app cache at port create, and never updated (even when updates arrive), if one of the updates changes the MAC address, this value will be out of date.\n\nI think that instead of caching it in the app, we should add another index on LPorts: (network_id, device_owner) and query it here with (lport.lswitch.id, DEVICE_OWNER_DHCP)","commit_id":"8e1431cd5d7ba947154390fa783757f92745b777"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"32cf239f90c0aea6ca593f7c96591394ae58326d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        dhcp_response.add_protocol(ethernet.ethernet("},{"line_number":179,"context_line":"                                                ethertype\u003dether.ETH_TYPE_IP,"},{"line_number":180,"context_line":"                                                dst\u003dpkt_ethernet.src,"},{"line_number":181,"context_line":"                                                src\u003ddhcp_port.mac))"},{"line_number":182,"context_line":"        dhcp_response.add_protocol(ipv4.ipv4(dst\u003dpkt_ipv4.src,"},{"line_number":183,"context_line":"                                             src\u003ddhcp_server_address,"},{"line_number":184,"context_line":"                                             proto\u003dpkt_ipv4.proto))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f485f77_761e7171","line":181,"range":{"start_line":181,"start_character":52,"end_line":181,"end_character":61},"in_reply_to":"1f485f77_12399240","updated":"2017-11-09 22:31:58.000000000","message":"Thanks for the comment , \nI still think that it\u0027s better to be cashed in the app as it require lookup per query. \nI added code that update the cache on lport update.","commit_id":"8e1431cd5d7ba947154390fa783757f92745b777"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"ed311f38d40bda710d7227922458d1734cb938d0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        dhcp_response.add_protocol(ethernet.ethernet("},{"line_number":179,"context_line":"                                                ethertype\u003dether.ETH_TYPE_IP,"},{"line_number":180,"context_line":"                                                dst\u003dpkt_ethernet.src,"},{"line_number":181,"context_line":"                                                src\u003ddhcp_port.mac))"},{"line_number":182,"context_line":"        dhcp_response.add_protocol(ipv4.ipv4(dst\u003dpkt_ipv4.src,"},{"line_number":183,"context_line":"                                             src\u003ddhcp_server_address,"},{"line_number":184,"context_line":"                                             proto\u003dpkt_ipv4.proto))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f485f77_b09e1505","line":181,"range":{"start_line":181,"start_character":52,"end_line":181,"end_character":61},"in_reply_to":"1f485f77_761e7171","updated":"2017-11-12 06:17:36.000000000","message":"If you want to avoid lookups then you should store IDs and retrieve by ID, this takes just one dictionary lookup in the DB store. This there\u0027s less chance for references to objects no longer in DB store.","commit_id":"8e1431cd5d7ba947154390fa783757f92745b777"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"e5bb8b13c622e14992234e67e703dae31d62f9f0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        dhcp_response.add_protocol(ethernet.ethernet("},{"line_number":179,"context_line":"                                                ethertype\u003dether.ETH_TYPE_IP,"},{"line_number":180,"context_line":"                                                dst\u003dpkt_ethernet.src,"},{"line_number":181,"context_line":"                                                src\u003ddhcp_port.mac))"},{"line_number":182,"context_line":"        dhcp_response.add_protocol(ipv4.ipv4(dst\u003dpkt_ipv4.src,"},{"line_number":183,"context_line":"                                             src\u003ddhcp_server_address,"},{"line_number":184,"context_line":"                                             proto\u003dpkt_ipv4.proto))"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f485f77_f0bdad68","line":181,"range":{"start_line":181,"start_character":52,"end_line":181,"end_character":61},"in_reply_to":"1f485f77_b09e1505","updated":"2017-11-12 06:23:52.000000000","message":"cool , will do .","commit_id":"8e1431cd5d7ba947154390fa783757f92745b777"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"3535f37a5ad3c8c3ce060da6382b26b235aa19ce","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    def _install_dhcp_packet_match_flow(self):"},{"line_number":401,"context_line":"        parser \u003d self.parser"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        match \u003d parser.OFPMatch(eth_type\u003dether.ETH_TYPE_IP,"},{"line_number":404,"context_line":"                                ip_proto\u003dn_const.PROTO_NUM_UDP,"},{"line_number":405,"context_line":"                                udp_src\u003dconst.DHCP_CLIENT_PORT,"},{"line_number":406,"context_line":"                                udp_dst\u003dconst.DHCP_SERVER_PORT)"}],"source_content_type":"text/x-python","patch_set":27,"id":"1f485f77_df9d67bc","line":403,"updated":"2017-11-19 11:17:30.000000000","message":"Why is this change necessary?","commit_id":"ea4cf2abea939dcfa34f51f670af7c234dc49193"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"04915b718e9319a11a8aedd925ddb365f0a1aefe","unresolved":false,"context_lines":[{"line_number":400,"context_line":"    def _install_dhcp_packet_match_flow(self):"},{"line_number":401,"context_line":"        parser \u003d self.parser"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        match \u003d parser.OFPMatch(eth_type\u003dether.ETH_TYPE_IP,"},{"line_number":404,"context_line":"                                ip_proto\u003dn_const.PROTO_NUM_UDP,"},{"line_number":405,"context_line":"                                udp_src\u003dconst.DHCP_CLIENT_PORT,"},{"line_number":406,"context_line":"                                udp_dst\u003dconst.DHCP_SERVER_PORT)"}],"source_content_type":"text/x-python","patch_set":27,"id":"ff82abbf_b57564cd","line":403,"in_reply_to":"1f485f77_df9d67bc","updated":"2017-11-26 10:03:19.000000000","message":"Because when the dhcp-server responses with MAC address , now the clients could send the next requests to that MAC","commit_id":"ea4cf2abea939dcfa34f51f670af7c234dc49193"}],"dragonflow/controller/apps/portsec.py":[{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"dd6c8c84991f526074c2bb677f76b77ebc7ee326","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # DHCP packets with the vm mac pass"},{"line_number":180,"context_line":"        match \u003d parser.OFPMatch(reg6\u003dunique_key,"},{"line_number":181,"context_line":"                                eth_src\u003dvm_mac,"},{"line_number":182,"context_line":"                                eth_type\u003dether.ETH_TYPE_IP,"},{"line_number":183,"context_line":"                                ip_proto\u003dn_const.PROTO_NUM_UDP,"},{"line_number":184,"context_line":"                                udp_src\u003dconst.DHCP_CLIENT_PORT,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_312b2595","line":181,"updated":"2017-12-03 12:18:01.000000000","message":"Shouldn\u0027t you check here for: eth_dst \u003d\u003d dhcp_port.mac?","commit_id":"561104cbc1990651d6696989ff9f760033211e26"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"684c65c58cf2e65a758f6ddc9548903f262b2f67","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # DHCP packets with the vm mac pass"},{"line_number":180,"context_line":"        match \u003d parser.OFPMatch(reg6\u003dunique_key,"},{"line_number":181,"context_line":"                                eth_src\u003dvm_mac,"},{"line_number":182,"context_line":"                                eth_type\u003dether.ETH_TYPE_IP,"},{"line_number":183,"context_line":"                                ip_proto\u003dn_const.PROTO_NUM_UDP,"},{"line_number":184,"context_line":"                                udp_src\u003dconst.DHCP_CLIENT_PORT,"}],"source_content_type":"text/x-python","patch_set":28,"id":"df87a7cf_2c198878","line":181,"in_reply_to":"df87a7cf_312b2595","updated":"2017-12-03 12:31:16.000000000","message":"well it\u0027s can be or broadcast mac (for dhcp discover , and client that uses the broadcast also for the request (it\u0027s valid ..)) or the dhcp-MAC  , it\u0027s can be done by 2 rules but i think that this role is good enough ...","commit_id":"561104cbc1990651d6696989ff9f760033211e26"}],"dragonflow/tests/common/app_testing_objects.py":[{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"80dc98366f386a091aba5de53ea2db12bb292a65","unresolved":false,"context_lines":[{"line_number":814,"context_line":"            LOG.info(str(pkt))"},{"line_number":815,"context_line":"            return False"},{"line_number":816,"context_line":"        dhcp_type \u003d _get_dhcp_message_type_opt(pkt_dhcp_protocol)"},{"line_number":817,"context_line":"        #(leyal) for debugging DNM"},{"line_number":818,"context_line":"        if dhcp_type \u003d\u003d self.get_dhcp_packet_type():"},{"line_number":819,"context_line":"            return True"},{"line_number":820,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_b7f80bc4","line":817,"range":{"start_line":817,"start_character":8,"end_line":817,"end_character":9},"updated":"2017-11-01 10:48:00.000000000","message":"\"# \"","commit_id":"3cd558a9e6b95e5284c1c908737eba716cf7b94b"}]}
