Lines Matching refs:tncs

14 #include "tncs.h"
189 struct tncs_data *tncs;
194 tncs = tncs_global_data->connections;
195 while (tncs) {
196 if (tncs->connectionID == connectionID)
197 return tncs;
198 tncs = tncs->next;
249 struct tncs_data *tncs;
262 tncs = tncs_get_conn(connectionID);
263 if (tncs == NULL)
270 os_free(tncs->imv_data[imvID].imv_send);
271 tncs->imv_data[imvID].imv_send_len = 0;
272 tncs->imv_data[imvID].imv_send = os_zalloc(b64len + 100);
273 if (tncs->imv_data[imvID].imv_send == NULL) {
278 tncs->imv_data[imvID].imv_send_len =
279 os_snprintf((char *) tncs->imv_data[imvID].imv_send,
308 struct tncs_data *tncs;
318 tncs = tncs_get_conn(connectionID);
319 if (tncs == NULL)
322 tncs->imv_data[imvID].recommendation = recommendation;
323 tncs->imv_data[imvID].recommendation_set = 1;
579 static void tncs_send_to_imvs(struct tncs_data *tncs, unsigned int type,
587 for (imv = tncs->imv; imv; imv = imv->next) {
594 res = imv->ReceiveMessage(imv->imvID, tncs->connectionID,
603 static void tncs_batch_ending(struct tncs_data *tncs)
608 for (imv = tncs->imv; imv; imv = imv->next) {
614 res = imv->BatchEnding(imv->imvID, tncs->connectionID);
621 static void tncs_solicit_recommendation(struct tncs_data *tncs)
626 for (imv = tncs->imv; imv; imv = imv->next) {
627 if (tncs->imv_data[imv->imvID].recommendation_set)
633 tncs->connectionID);
640 void tncs_init_connection(struct tncs_data *tncs)
645 for (imv = tncs->imv; imv; imv = imv->next) {
647 imv, tncs->connectionID, TNC_CONNECTION_STATE_CREATE);
649 imv, tncs->connectionID,
654 os_free(tncs->imv_data[i].imv_send);
655 tncs->imv_data[i].imv_send = NULL;
656 tncs->imv_data[i].imv_send_len = 0;
661 size_t tncs_total_send_len(struct tncs_data *tncs)
667 len += tncs->imv_data[i].imv_send_len;
668 if (tncs->tncs_message)
669 len += os_strlen(tncs->tncs_message);
674 u8 * tncs_copy_send_buf(struct tncs_data *tncs, u8 *pos)
679 if (tncs->imv_data[i].imv_send == NULL)
682 os_memcpy(pos, tncs->imv_data[i].imv_send,
683 tncs->imv_data[i].imv_send_len);
684 pos += tncs->imv_data[i].imv_send_len;
685 os_free(tncs->imv_data[i].imv_send);
686 tncs->imv_data[i].imv_send = NULL;
687 tncs->imv_data[i].imv_send_len = 0;
690 if (tncs->tncs_message) {
691 size_t len = os_strlen(tncs->tncs_message);
692 os_memcpy(pos, tncs->tncs_message, len);
694 os_free(tncs->tncs_message);
695 tncs->tncs_message = NULL;
702 char * tncs_if_tnccs_start(struct tncs_data *tncs)
707 tncs->last_batchid++;
708 os_snprintf(buf, 1000, IF_TNCCS_START, tncs->last_batchid);
760 static enum tncs_process_res tncs_derive_recommendation(struct tncs_data *tncs)
769 if (tncs->done)
772 tncs_solicit_recommendation(tncs);
776 for (imv = tncs->imv; imv; imv = imv->next) {
778 irec = tncs->imv_data[imv->imvID].recommendation;
790 tncs->recommendation = rec;
791 tncs->done = 1;
814 os_free(tncs->tncs_message);
815 tncs->tncs_message = os_zalloc(200);
816 if (tncs->tncs_message) {
817 os_snprintf(tncs->tncs_message, 199,
826 for (imv = tncs->imv; imv; imv = imv->next) {
827 tncs_imv_notify_connection_change(imv, tncs->connectionID,
846 enum tncs_process_res tncs_process_if_tnccs(struct tncs_data *tncs,
884 if (batch_id != tncs->last_batchid + 1) {
887 batch_id, tncs->last_batchid + 1);
891 tncs->last_batchid = batch_id;
938 tncs_send_to_imvs(tncs, type, decoded, decoded_len);
1020 tncs_batch_ending(tncs);
1022 if (tncs_total_send_len(tncs) == 0)
1023 return tncs_derive_recommendation(tncs);
1135 struct tncs_data *tncs;
1140 tncs = os_zalloc(sizeof(*tncs));
1141 if (tncs == NULL)
1143 tncs->imv = tncs_global_data->imv;
1144 tncs->connectionID = tncs_global_data->next_conn_id++;
1145 tncs->next = tncs_global_data->connections;
1146 tncs_global_data->connections = tncs;
1148 return tncs;
1152 void tncs_deinit(struct tncs_data *tncs)
1157 if (tncs == NULL)
1161 os_free(tncs->imv_data[i].imv_send);
1166 if (conn == tncs) {
1168 prev->next = tncs->next;
1170 tncs_global_data->connections = tncs->next;
1177 os_free(tncs->tncs_message);
1178 os_free(tncs);