diff options
author | Jordan Augé <jordan.auge+fdio@cisco.com> | 2019-11-17 00:07:12 +0100 |
---|---|---|
committer | Jordan Augé <jordan.auge+fdio@cisco.com> | 2019-11-17 11:03:31 +0100 |
commit | 2ada8954ecd3601d115a22696c4c3ab90858cec3 (patch) | |
tree | 6db983388333e8776eecaf9c07c5b7bd6f2f10be /hicn-light/src/hicn/config/configuration.c | |
parent | 2dcc25795fab0100ce33852f08d77a5fd90d8f14 (diff) |
[HICN-379] Add face priority support in face manager
Change-Id: If4f75d44fc66414a4a70135de7827f5082b97112
Signed-off-by: Jordan Augé <jordan.auge+fdio@cisco.com>
Diffstat (limited to 'hicn-light/src/hicn/config/configuration.c')
-rw-r--r-- | hicn-light/src/hicn/config/configuration.c | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/hicn-light/src/hicn/config/configuration.c b/hicn-light/src/hicn/config/configuration.c index 01192569f..f135dcc5a 100644 --- a/hicn-light/src/hicn/config/configuration.c +++ b/hicn-light/src/hicn/config/configuration.c @@ -420,6 +420,7 @@ struct iovec *configuration_ProcessCreateTunnel(Configuration *config, Connection *conn = connection_Create(ops); #ifdef WITH_POLICY connection_SetTags(conn, control->tags); + connection_SetPriority(conn, control->priority); #endif /* WITH_POLICY */ connection_SetAdminState(conn, control->admin_state); @@ -443,6 +444,7 @@ struct iovec *configuration_ProcessCreateTunnel(Configuration *config, } else { #ifdef WITH_POLICY connection_SetTags(conn, control->tags); + connection_SetPriority(conn, control->priority); connection_SetAdminState(conn, control->admin_state); #ifdef WITH_MAPME @@ -704,6 +706,7 @@ struct iovec *configuration_ProcessConnectionList(Configuration *config, listConnectionsCommand->connectionData.admin_state = connection_GetAdminState(original); #ifdef WITH_POLICY + listConnectionsCommand->priority = connection_GetPriority(original); listConnectionsCommand->connectionData.tags = connection_GetTags(original); #endif /* WITH_POLICY */ @@ -1162,7 +1165,7 @@ struct iovec *configuration_ConnectionSetAdminState(Configuration *config, connection_SetAdminState(conn, control->admin_state); #ifdef WITH_MAPME - /* Hook: new connection created through the control protocol */ + /* Hook: connection event */ forwarder_onConnectionEvent(config->forwarder, conn, control->admin_state == CONNECTION_STATE_UP ? CONNECTION_EVENT_SET_UP @@ -1173,6 +1176,27 @@ struct iovec *configuration_ConnectionSetAdminState(Configuration *config, } #ifdef WITH_POLICY + +struct iovec *configuration_ConnectionSetPriority(Configuration *config, + struct iovec *request) { + header_control_message *header = request[0].iov_base; + connection_set_priority_command *control = request[1].iov_base; + + Connection * conn = getConnectionBySymbolicOrId(config, control->symbolicOrConnid); + if (!conn) + return utils_CreateNack(header, control, sizeof(connection_set_priority_command)); + + connection_SetPriority(conn, control->priority); + +#ifdef WITH_MAPME + /* Hook: connection event */ + forwarder_onConnectionEvent(config->forwarder, conn, + CONNECTION_EVENT_PRIORITY_CHANGED); +#endif /* WITH_MAPME */ + + return utils_CreateAck(header, control, sizeof(connection_set_priority_command)); +} + struct iovec *configuration_ProcessPolicyAdd(Configuration *config, struct iovec *request) { header_control_message *header = request[0].iov_base; @@ -1256,12 +1280,14 @@ struct iovec *configuration_UpdateConnection(Configuration *config, Connection * conn = getConnectionBySymbolicOrId(config, control->symbolicOrConnid); if (!conn) - return utils_CreateNack(header, control, sizeof(connection_set_admin_state_command)); + return utils_CreateNack(header, control, sizeof(update_connection_command)); connection_SetTags(conn, control->tags); connection_SetAdminState(conn, control->admin_state); + if (control->priority > 0) + connection_SetPriority(conn, control->priority); - return utils_CreateAck(header, control, sizeof(remove_policy_command)); + return utils_CreateAck(header, control, sizeof(update_connection_command)); } #endif /* WITH_POLICY */ @@ -1372,6 +1398,10 @@ struct iovec *configuration_DispatchCommand(Configuration *config, case UPDATE_CONNECTION: response = configuration_UpdateConnection(config, control); break; + + case CONNECTION_SET_PRIORITY: + response = configuration_ConnectionSetPriority(config, control); + break; #endif /* WITH_POLICY */ default: |