This is an automated email from the ASF dual-hosted git repository. gmurthy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
The following commit(s) were added to refs/heads/main by this push: new 21a3a82 DISPATCH-2230: Check the discard flag and don't perform the action if it has been discarded 21a3a82 is described below commit 21a3a8216e53d32fc48a989e903d619712f42404 Author: Ganesh Murthy <gmur...@apache.org> AuthorDate: Mon Oct 18 13:05:43 2021 -0400 DISPATCH-2230: Check the discard flag and don't perform the action if it has been discarded --- src/router_core/agent.c | 134 ++++++++++++++++++++++------------------- src/router_core/route_tables.c | 18 ++++++ 2 files changed, 89 insertions(+), 63 deletions(-) diff --git a/src/router_core/agent.c b/src/router_core/agent.c index 42f6d34..68a96bf 100644 --- a/src/router_core/agent.c +++ b/src/router_core/agent.c @@ -417,21 +417,23 @@ static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool disc qd_iterator_t *name = qdr_field_iterator(action->args.agent.name); qdr_query_t *query = action->args.agent.query; - switch (query->entity_type) { - case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_CT(core, name, identity, query, qdr_config_address_columns); break; - case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_CT(core, name, identity, query, qdr_config_link_route_columns); break; - case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_CT(core, name, identity, query, qdr_config_auto_link_columns); break; - case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_CONNECTION: qdra_connection_get_CT(core, name, identity, query, qdr_connection_columns); break; - case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_CT(core, name, identity, query, qdr_tcp_connection_columns); break; - case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_CT(core, name, identity, query, qdr_http_request_info_columns); break; - case QD_ROUTER_LINK: break; - case QD_ROUTER_ADDRESS: qdra_address_get_CT(core, name, identity, query, qdr_address_columns); break; - case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_EXCHANGE: qdra_config_exchange_get_CT(core, name, identity, query, qdr_config_exchange_columns); break; - case QD_ROUTER_BINDING: qdra_config_binding_get_CT(core, name, identity, query, qdr_config_binding_columns); break; - case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_get_CT(core, name, identity, query, qdr_conn_link_route_columns); break; - } + if (!discard) { + switch (query->entity_type) { + case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_CT(core, name, identity, query, qdr_config_address_columns); break; + case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_CT(core, name, identity, query, qdr_config_link_route_columns); break; + case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_CT(core, name, identity, query, qdr_config_auto_link_columns); break; + case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_CONNECTION: qdra_connection_get_CT(core, name, identity, query, qdr_connection_columns); break; + case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_CT(core, name, identity, query, qdr_tcp_connection_columns); break; + case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_CT(core, name, identity, query, qdr_http_request_info_columns); break; + case QD_ROUTER_LINK: break; + case QD_ROUTER_ADDRESS: qdra_address_get_CT(core, name, identity, query, qdr_address_columns); break; + case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_EXCHANGE: qdra_config_exchange_get_CT(core, name, identity, query, qdr_config_exchange_columns); break; + case QD_ROUTER_BINDING: qdra_config_binding_get_CT(core, name, identity, query, qdr_config_binding_columns); break; + case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_get_CT(core, name, identity, query, qdr_conn_link_route_columns); break; + } + } qdr_field_free(action->args.agent.name); qdr_field_free(action->args.agent.identity); @@ -445,22 +447,24 @@ static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool di qd_parsed_field_t *in_body = action->args.agent.in_body; qd_buffer_list_t body_buffers = action->args.agent.body_buffers; - switch (query->entity_type) { - case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_create_CT(core, name, query, in_body); break; - case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_create_CT(core, name, query, in_body); break; - case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_create_CT(core, name, query, in_body); break; - case QD_ROUTER_CONNECTION: break; - case QD_ROUTER_TCP_CONNECTION: break; - case QD_ROUTER_HTTP_REQUEST_INFO: break; - case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_LINK: break; - case QD_ROUTER_ADDRESS: break; - case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_EXCHANGE: qdra_config_exchange_create_CT(core, name, query, in_body); break; - case QD_ROUTER_BINDING: qdra_config_binding_create_CT(core, name, query, in_body); break; - case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_create_CT(core, name, query, in_body); break; - - } + if (!discard) { + switch (query->entity_type) { + case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_create_CT(core, name, query, in_body); break; + case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_create_CT(core, name, query, in_body); break; + case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_create_CT(core, name, query, in_body); break; + case QD_ROUTER_CONNECTION: break; + case QD_ROUTER_TCP_CONNECTION: break; + case QD_ROUTER_HTTP_REQUEST_INFO: break; + case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_LINK: break; + case QD_ROUTER_ADDRESS: break; + case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_EXCHANGE: qdra_config_exchange_create_CT(core, name, query, in_body); break; + case QD_ROUTER_BINDING: qdra_config_binding_create_CT(core, name, query, in_body); break; + case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_create_CT(core, name, query, in_body); break; + + } + } qdr_field_free(action->args.agent.name); qd_parse_free(in_body); @@ -474,21 +478,23 @@ static void qdr_manage_delete_CT(qdr_core_t *core, qdr_action_t *action, bool di qd_iterator_t *identity = qdr_field_iterator(action->args.agent.identity); qdr_query_t *query = action->args.agent.query; - switch (query->entity_type) { - case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_delete_CT(core, query, name, identity); break; - case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_delete_CT(core, query, name, identity); break; - case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_delete_CT(core, query, name, identity); break; - case QD_ROUTER_CONNECTION: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_TCP_CONNECTION: break; - case QD_ROUTER_HTTP_REQUEST_INFO: break; - case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_LINK: break; - case QD_ROUTER_ADDRESS: break; - case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_EXCHANGE: qdra_config_exchange_delete_CT(core, query, name, identity); break; - case QD_ROUTER_BINDING: qdra_config_binding_delete_CT(core, query, name, identity); break; - case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_delete_CT(core, query, name, identity); break; - } + if (!discard) { + switch (query->entity_type) { + case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_delete_CT(core, query, name, identity); break; + case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_delete_CT(core, query, name, identity); break; + case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_delete_CT(core, query, name, identity); break; + case QD_ROUTER_CONNECTION: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_TCP_CONNECTION: break; + case QD_ROUTER_HTTP_REQUEST_INFO: break; + case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_LINK: break; + case QD_ROUTER_ADDRESS: break; + case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_EXCHANGE: qdra_config_exchange_delete_CT(core, query, name, identity); break; + case QD_ROUTER_BINDING: qdra_config_binding_delete_CT(core, query, name, identity); break; + case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_delete_CT(core, query, name, identity); break; + } + } qdr_field_free(action->args.agent.name); qdr_field_free(action->args.agent.identity); @@ -501,21 +507,23 @@ static void qdr_manage_update_CT(qdr_core_t *core, qdr_action_t *action, bool di qdr_query_t *query = action->args.agent.query; qd_parsed_field_t *in_body = action->args.agent.in_body; - switch (query->entity_type) { - case QD_ROUTER_CONFIG_ADDRESS: break; - case QD_ROUTER_CONFIG_LINK_ROUTE: break; - case QD_ROUTER_CONFIG_AUTO_LINK: break; - case QD_ROUTER_CONNECTION: qdra_connection_update_CT(core, name, identity, query, in_body); break; - case QD_ROUTER_TCP_CONNECTION: break; - case QD_ROUTER_HTTP_REQUEST_INFO: break; - case QD_ROUTER_ROUTER: break; - case QD_ROUTER_LINK: qdra_link_update_CT(core, name, identity, query, in_body); break; - case QD_ROUTER_ADDRESS: break; - case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; - case QD_ROUTER_EXCHANGE: break; - case QD_ROUTER_BINDING: break; - case QD_ROUTER_CONN_LINK_ROUTE: break; - } + if (!discard) { + switch (query->entity_type) { + case QD_ROUTER_CONFIG_ADDRESS: break; + case QD_ROUTER_CONFIG_LINK_ROUTE: break; + case QD_ROUTER_CONFIG_AUTO_LINK: break; + case QD_ROUTER_CONNECTION: qdra_connection_update_CT(core, name, identity, query, in_body); break; + case QD_ROUTER_TCP_CONNECTION: break; + case QD_ROUTER_HTTP_REQUEST_INFO: break; + case QD_ROUTER_ROUTER: break; + case QD_ROUTER_LINK: qdra_link_update_CT(core, name, identity, query, in_body); break; + case QD_ROUTER_ADDRESS: break; + case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break; + case QD_ROUTER_EXCHANGE: break; + case QD_ROUTER_BINDING: break; + case QD_ROUTER_CONN_LINK_ROUTE: break; + } + } qdr_field_free(action->args.agent.name); qdr_field_free(action->args.agent.identity); @@ -538,7 +546,7 @@ static void qdrh_query_get_first_CT(qdr_core_t *core, qdr_action_t *action, bool case QD_ROUTER_ROUTER: qdra_router_get_first_CT(core, query, offset); break; case QD_ROUTER_CONNECTION: qdra_connection_get_first_CT(core, query, offset); break; case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_first_CT(core, query, offset); break; - case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_first_CT(core, query, offset); break; + case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_first_CT(core, query, offset); break; case QD_ROUTER_LINK: qdra_link_get_first_CT(core, query, offset); break; case QD_ROUTER_ADDRESS: qdra_address_get_first_CT(core, query, offset); break; case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, true); break; @@ -562,7 +570,7 @@ static void qdrh_query_get_next_CT(qdr_core_t *core, qdr_action_t *action, bool case QD_ROUTER_ROUTER: qdra_router_get_next_CT(core, query); break; case QD_ROUTER_CONNECTION: qdra_connection_get_next_CT(core, query); break; case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_next_CT(core, query); break; - case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_next_CT(core, query); break; + case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_next_CT(core, query); break; case QD_ROUTER_LINK: qdra_link_get_next_CT(core, query); break; case QD_ROUTER_ADDRESS: qdra_address_get_next_CT(core, query); break; case QD_ROUTER_FORBIDDEN: break; diff --git a/src/router_core/route_tables.c b/src/router_core/route_tables.c index ef831a0..625936f 100644 --- a/src/router_core/route_tables.c +++ b/src/router_core/route_tables.c @@ -359,6 +359,9 @@ static void qdr_add_router_CT(qdr_core_t *core, qdr_action_t *action, bool disca static void qdr_del_router_CT(qdr_core_t *core, qdr_action_t *action, bool discard) { + if (!!discard) + return; + int router_maskbit = action->args.route_table.router_maskbit; if (router_maskbit >= qd_bitmask_width() || router_maskbit < 0) { @@ -413,6 +416,9 @@ static void qdr_del_router_CT(qdr_core_t *core, qdr_action_t *action, bool disca static void qdr_set_link_CT(qdr_core_t *core, qdr_action_t *action, bool discard) { + if (!!discard) + return; + int router_maskbit = action->args.route_table.router_maskbit; int conn_maskbit = action->args.route_table.link_maskbit; // "link" identifies a connection, not an amqp link @@ -447,6 +453,9 @@ static void qdr_set_link_CT(qdr_core_t *core, qdr_action_t *action, bool discard static void qdr_remove_link_CT(qdr_core_t *core, qdr_action_t *action, bool discard) { + if (!!discard) + return; + int router_maskbit = action->args.route_table.router_maskbit; if (router_maskbit >= qd_bitmask_width() || router_maskbit < 0) { @@ -466,6 +475,9 @@ static void qdr_remove_link_CT(qdr_core_t *core, qdr_action_t *action, bool disc static void qdr_set_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool discard) { + if (!!discard) + return; + int router_maskbit = action->args.route_table.router_maskbit; int nh_router_maskbit = action->args.route_table.nh_router_maskbit; @@ -499,6 +511,9 @@ static void qdr_set_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool dis static void qdr_remove_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool discard) { + if (!!discard) + return; + int router_maskbit = action->args.route_table.router_maskbit; if (router_maskbit >= qd_bitmask_width() || router_maskbit < 0) { @@ -513,6 +528,9 @@ static void qdr_remove_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool static void qdr_set_cost_CT(qdr_core_t *core, qdr_action_t *action, bool discard) { + if (!!discard) + return; + int router_maskbit = action->args.route_table.router_maskbit; int cost = action->args.route_table.cost; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org