)]}'
{"dragonflow/common/utils.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ea757bc26be4ed0127d27de4c6d8de94c60b92fa","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class RateLimiter(object):"},{"line_number":175,"context_line":"    def __init__(self, max_rate\u003d3, time_unit\u003d1, **kwargs):"},{"line_number":176,"context_line":"        self.time_unit \u003d time_unit"},{"line_number":177,"context_line":"        self.deque \u003d deque(maxlen\u003dmax_rate)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_7a3bcc9c","line":175,"range":{"start_line":175,"start_character":50,"end_line":175,"end_character":57},"updated":"2016-03-28 13:32:58.000000000","message":"This argument is unused.","commit_id":"0f7cc47a5b3bddd420501557445aea8961b79f1b"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d22d223b8f249054d2eb39eec0b6d8e40a34e99c","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"class RateLimiter(object):"},{"line_number":175,"context_line":"    def __init__(self, max_rate\u003d3, time_unit\u003d1, **kwargs):"},{"line_number":176,"context_line":"        self.time_unit \u003d time_unit"},{"line_number":177,"context_line":"        self.deque \u003d deque(maxlen\u003dmax_rate)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_957dc570","line":175,"range":{"start_line":175,"start_character":50,"end_line":175,"end_character":57},"in_reply_to":"da0c15f0_7a3bcc9c","updated":"2016-03-30 13:30:38.000000000","message":"will do","commit_id":"0f7cc47a5b3bddd420501557445aea8961b79f1b"}],"dragonflow/controller/dhcp_app.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ea757bc26be4ed0127d27de4c6d8de94c60b92fa","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        lport_id \u003d lport.get_id()"},{"line_number":367,"context_line":"        tunnel_key \u003d lport.get_tunnel_key()"},{"line_number":368,"context_line":"        ofport \u003d lport.get_external_value(\u0027ofport\u0027)"},{"line_number":369,"context_line":"        port_data \u003d PortRateLimiter("},{"line_number":370,"context_line":"                        lport_id\u003dlport_id,"},{"line_number":371,"context_line":"                        ofport_num\u003dofport,"},{"line_number":372,"context_line":"                        max_rate\u003dcfg.CONF.df_dhcp_max_rate_per_sec)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_1afa9075","line":369,"updated":"2016-03-28 13:32:58.000000000","message":"Consider using here a tuple, rather than an entire extension class.","commit_id":"0f7cc47a5b3bddd420501557445aea8961b79f1b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2f0c5e37ee2a996f3ca62b815f41a1a2bd38449e","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        lport_id \u003d lport.get_id()"},{"line_number":367,"context_line":"        tunnel_key \u003d lport.get_tunnel_key()"},{"line_number":368,"context_line":"        ofport \u003d lport.get_external_value(\u0027ofport\u0027)"},{"line_number":369,"context_line":"        port_data \u003d PortRateLimiter("},{"line_number":370,"context_line":"                        lport_id\u003dlport_id,"},{"line_number":371,"context_line":"                        ofport_num\u003dofport,"},{"line_number":372,"context_line":"                        max_rate\u003dcfg.CONF.df_dhcp_max_rate_per_sec)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_9eef79e8","line":369,"in_reply_to":"ba0121b8_95cb05a5","updated":"2016-03-31 09:05:19.000000000","message":"I think using a tuple makes more sense here, since the added members are not used in the RateLimiter logic. \n\nIt\u0027s a software engineering issue, and can definitely wait till later.","commit_id":"0f7cc47a5b3bddd420501557445aea8961b79f1b"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"d22d223b8f249054d2eb39eec0b6d8e40a34e99c","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        lport_id \u003d lport.get_id()"},{"line_number":367,"context_line":"        tunnel_key \u003d lport.get_tunnel_key()"},{"line_number":368,"context_line":"        ofport \u003d lport.get_external_value(\u0027ofport\u0027)"},{"line_number":369,"context_line":"        port_data \u003d PortRateLimiter("},{"line_number":370,"context_line":"                        lport_id\u003dlport_id,"},{"line_number":371,"context_line":"                        ofport_num\u003dofport,"},{"line_number":372,"context_line":"                        max_rate\u003dcfg.CONF.df_dhcp_max_rate_per_sec)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba0121b8_95cb05a5","line":369,"in_reply_to":"da0c15f0_1afa9075","updated":"2016-03-30 13:30:38.000000000","message":"I am not sure I understand your suggestion, it is a Object I need to call () in order to rate limit.\n\nAm i missing some thing ?","commit_id":"0f7cc47a5b3bddd420501557445aea8961b79f1b"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"0499830b2f9a9b30878773a3b1d0b55d278835ae","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            ofport_num,"},{"line_number":108,"context_line":"            lport_id) \u003d self.local_tunnel_to_pid_map[port_tunnel_key]"},{"line_number":109,"context_line":"        if port_rate_limiter():"},{"line_number":110,"context_line":"            import ipdb; ipdb.set_trace()"},{"line_number":111,"context_line":"            self._block_port_dhcp_traffic("},{"line_number":112,"context_line":"                    ofport_num,"},{"line_number":113,"context_line":"                    self.block_hard_timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_5e9ceb0e","line":110,"range":{"start_line":110,"start_character":12,"end_line":110,"end_character":41},"updated":"2016-05-10 11:31:37.000000000","message":"remove it?","commit_id":"76ac3d72d161b0a50d92e5830f24e72418e692e8"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"f3ab50d577d0e58960d46738ba1ee87ddf87b204","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            ofport_num,"},{"line_number":108,"context_line":"            lport_id) \u003d self.local_tunnel_to_pid_map[port_tunnel_key]"},{"line_number":109,"context_line":"        if port_rate_limiter():"},{"line_number":110,"context_line":"            import ipdb; ipdb.set_trace()"},{"line_number":111,"context_line":"            self._block_port_dhcp_traffic("},{"line_number":112,"context_line":"                    ofport_num,"},{"line_number":113,"context_line":"                    self.block_hard_timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dab17558_1b02703d","line":110,"range":{"start_line":110,"start_character":12,"end_line":110,"end_character":41},"in_reply_to":"dab17558_5e9ceb0e","updated":"2016-05-10 12:50:01.000000000","message":"Yes thanks","commit_id":"76ac3d72d161b0a50d92e5830f24e72418e692e8"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"5d8416b9a58f7c9779b07dbddd0e99110f6d0c0f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.IntOpt(\u0027df_default_network_device_mtu\u0027, default\u003d1460,"},{"line_number":43,"context_line":"        help\u003d_(\u0027default MTU setting for interface.\u0027)),"},{"line_number":44,"context_line":"    cfg.IntOpt(\u0027df_dhcp_max_rate_per_sec\u0027, default\u003d3,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Max rate per secound for DHCP per port messages\u0027)),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027df_dhcp_block_time_in_sec\u0027, default\u003d100,"},{"line_number":47,"context_line":"        help\u003d_(\u0027Time to block port that passe dthe max rate\u0027)),"},{"line_number":48,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_c51a4e17","line":45,"range":{"start_line":45,"start_character":29,"end_line":45,"end_character":36},"updated":"2016-05-19 08:13:14.000000000","message":"second","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"7f75da2039f3e50cc6be256829eab357aac42e4b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.IntOpt(\u0027df_default_network_device_mtu\u0027, default\u003d1460,"},{"line_number":43,"context_line":"        help\u003d_(\u0027default MTU setting for interface.\u0027)),"},{"line_number":44,"context_line":"    cfg.IntOpt(\u0027df_dhcp_max_rate_per_sec\u0027, default\u003d3,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Max rate per secound for DHCP per port messages\u0027)),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027df_dhcp_block_time_in_sec\u0027, default\u003d100,"},{"line_number":47,"context_line":"        help\u003d_(\u0027Time to block port that passe dthe max rate\u0027)),"},{"line_number":48,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_944dd29b","line":45,"range":{"start_line":45,"start_character":29,"end_line":45,"end_character":36},"in_reply_to":"bab6814e_c51a4e17","updated":"2016-05-19 10:49:49.000000000","message":"Done","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"5d8416b9a58f7c9779b07dbddd0e99110f6d0c0f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.IntOpt(\u0027df_dhcp_max_rate_per_sec\u0027, default\u003d3,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Max rate per secound for DHCP per port messages\u0027)),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027df_dhcp_block_time_in_sec\u0027, default\u003d100,"},{"line_number":47,"context_line":"        help\u003d_(\u0027Time to block port that passe dthe max rate\u0027)),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_c59fee5d","line":47,"range":{"start_line":47,"start_character":40,"end_line":47,"end_character":50},"updated":"2016-05-19 08:13:14.000000000","message":"passes the","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"7f75da2039f3e50cc6be256829eab357aac42e4b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.IntOpt(\u0027df_dhcp_max_rate_per_sec\u0027, default\u003d3,"},{"line_number":45,"context_line":"        help\u003d_(\u0027Max rate per secound for DHCP per port messages\u0027)),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027df_dhcp_block_time_in_sec\u0027, default\u003d100,"},{"line_number":47,"context_line":"        help\u003d_(\u0027Time to block port that passe dthe max rate\u0027)),"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_f4441e75","line":47,"range":{"start_line":47,"start_character":40,"end_line":47,"end_character":50},"in_reply_to":"bab6814e_c59fee5d","updated":"2016-05-19 10:49:49.000000000","message":"Done","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"13ce9a77dd6f70091e319c9ff1d62443cbe94dc7","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        (port_rate_limiter,"},{"line_number":107,"context_line":"            ofport_num,"},{"line_number":108,"context_line":"            lport_id) \u003d self.local_tunnel_to_pid_map[port_tunnel_key]"},{"line_number":109,"context_line":"        if port_rate_limiter():"},{"line_number":110,"context_line":"            self._block_port_dhcp_traffic("},{"line_number":111,"context_line":"                    ofport_num,"},{"line_number":112,"context_line":"                    self.block_hard_timeout)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_a5739114","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":31},"updated":"2016-05-19 07:22:00.000000000","message":"If other apps support packetin, such as vrrp because vmac needs to be learned dynamically. This limiter will be messed.\nIf we filter packets by type or table that it comes from, to make sure only dhcp is limited, this can be solved.","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"df3d74b5ecedc713fc915fad229b06fd2aac6f44","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        (port_rate_limiter,"},{"line_number":107,"context_line":"            ofport_num,"},{"line_number":108,"context_line":"            lport_id) \u003d self.local_tunnel_to_pid_map[port_tunnel_key]"},{"line_number":109,"context_line":"        if port_rate_limiter():"},{"line_number":110,"context_line":"            self._block_port_dhcp_traffic("},{"line_number":111,"context_line":"                    ofport_num,"},{"line_number":112,"context_line":"                    self.block_hard_timeout)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_8855c451","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":31},"in_reply_to":"bab6814e_28e138ff","updated":"2016-05-19 07:45:21.000000000","message":"No this code will be run only for packet_in from the DHCP table.\nPlease look at register_table_handler(...)","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":20405,"name":"liuhaixia","email":"liuhaixia315@huawei.com","username":"liuhaixia"},"change_message_id":"cbf85813981dfcb80c99046ec980ed53e2ff8617","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        (port_rate_limiter,"},{"line_number":107,"context_line":"            ofport_num,"},{"line_number":108,"context_line":"            lport_id) \u003d self.local_tunnel_to_pid_map[port_tunnel_key]"},{"line_number":109,"context_line":"        if port_rate_limiter():"},{"line_number":110,"context_line":"            self._block_port_dhcp_traffic("},{"line_number":111,"context_line":"                    ofport_num,"},{"line_number":112,"context_line":"                    self.block_hard_timeout)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_28e138ff","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":31},"in_reply_to":"bab6814e_4858fc32","updated":"2016-05-19 07:38:32.000000000","message":"I mean if a new app installs a flow to intruct packets to controller, such as unkown unicast packets.\nThus unkown unicast packets will also invoke packet_in_handler within dhcp_app, so the limiter will be messed by these packets. If dhcp happens just on time...","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"b622768d51dfb9e95ae37cab71245150312912da","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        (port_rate_limiter,"},{"line_number":107,"context_line":"            ofport_num,"},{"line_number":108,"context_line":"            lport_id) \u003d self.local_tunnel_to_pid_map[port_tunnel_key]"},{"line_number":109,"context_line":"        if port_rate_limiter():"},{"line_number":110,"context_line":"            self._block_port_dhcp_traffic("},{"line_number":111,"context_line":"                    ofport_num,"},{"line_number":112,"context_line":"                    self.block_hard_timeout)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_4858fc32","line":109,"range":{"start_line":109,"start_character":4,"end_line":109,"end_character":31},"in_reply_to":"bab6814e_a5739114","updated":"2016-05-19 07:30:29.000000000","message":"I am not sure I follow, This is only for DHCP. \nThis is the handler only from the DHCP table and it is blocking only DHCP traffic \n\n self.api.register_table_handler(const.DHCP_TABLE,\n                self.packet_in_handler)","commit_id":"0d6c88a9e48f33212f161620c4f381f0c57411cb"}],"dragonflow/tests/fullstack/test_apps.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"f36e0ad8ec2efe02e1cb3f36c0f24ef00d32ea30","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        if len(self.policy.exceptions) \u003e 0:"},{"line_number":375,"context_line":"            raise self.policy.exceptions[0]"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def test_dhcp_app_dos_block(self):"},{"line_number":378,"context_line":"        dhcp_packet \u003d self._create_dhcp_discover()"},{"line_number":379,"context_line":"        send_dhcp_offer \u003d app_testing_objects.SendAction("},{"line_number":380,"context_line":"            self.subnet1.subnet_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_8433b113","line":377,"range":{"start_line":377,"start_character":8,"end_line":377,"end_character":32},"updated":"2016-03-23 15:04:17.000000000","message":"currently just triggering the block \n\nWill add testing , @omer need your help here","commit_id":"e4338e9c246add30765fb772dc62cef0d58ede82"}]}
