⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsupgui_events.c

📁 linux 下通过802.1认证的安装包
💻 C
📖 第 1 页 / 共 2 页
字号:
		break;

	case IPC_EVENT_ERROR_FAILED_SETTING_UNKNOWN_KEY:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_FAILED_SETTING_UNKNOWN_KEY_STR, value);
		break;

	case IPC_EVENT_ERROR_OVERFLOW_ATTEMPTED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_OVERFLOW_ATTEMPTED_STR, value);
		break;

	case IPC_EVENT_ERROR_INVALID_KEY_REQUEST:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_INVALID_KEY_REQUEST_STR, value);
		break;

	case IPC_EVENT_ERROR_RESTRICTED_HOURS:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_RESTRICTED_HOURS_STR, value);
		break;

	case IPC_EVENT_ERROR_ACCT_DISABLED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_ACCT_DISABLED_STR, value);
		break;

	case IPC_EVENT_ERROR_PASSWD_EXPIRED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_PASSWD_EXPIRED_STR, value);
		break;

	case IPC_EVENT_ERROR_NO_PERMS:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_NO_PERMS_STR, value);
		break;

	case IPC_EVENT_ERROR_CHANGING_PASSWD:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_CHANGING_PASSWD_STR, value);
		break;

	case IPC_EVENT_ERROR_TEXT:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_TEXT_STR, value);
		break;

	case IPC_EVENT_ERROR_FAILED_AES_UNWRAP:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_FAILED_AES_UNWRAP_STR, value);
		break;

	case IPC_EVENT_ERROR_UNKNOWN_KEY_REQUEST:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_UNKNOWN_KEY_REQUEST_STR, value);
		break;

	case IPC_EVENT_ERROR_INVALID_PTK:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_INVALID_PTK_STR, value);
		break;

	case IPC_EVENT_ERROR_IES_DONT_MATCH:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_IES_DONT_MATCH_STR, value);
		break;

	case IPC_EVENT_ERROR_PMK_UNAVAILABLE:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_PMK_UNAVAILABLE_STR, value);
		break;

	case IPC_EVENT_ERROR_FAILED_ROOT_CA_LOAD:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_FAILED_ROOT_CA_LOAD_STR, value);
		break;

	case IPC_EVENT_ERROR_TLS_DECRYPTION_FAILED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_TLS_DECRYPTION_FAILED_STR, value);
		break;

	case IPC_EVENT_ERROR_SUPPLICANT_SHUTDOWN:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_SUPPLICANT_SHUTDOWN_STR, value);
		break;

	case IPC_EVENT_ERROR_NO_IPC_SLOTS:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_NO_IPC_SLOTS_STR, value);
		break;

	case IPC_EVENT_ERROR_UNKNOWN_EAPOL_KEY_TYPE:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_UNKNOWN_EAPOL_KEY_TYPE_STR, value);
		break;

	case IPC_EVENT_ERROR_INVALID_MIC_VERSION:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_INVALID_MIC_VERSION_STR, value);
		break;

	case IPC_EVENT_ERROR_UNKNOWN_PEAP_VERSION:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_UNKNOWN_PEAP_VERSION_STR, value);
		break;

	case IPC_EVENT_ERROR_NO_WCTX:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_NO_WCTX_STR, value);
		break;

	case IPC_EVENT_ERROR_CANT_RENEW_DHCP:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_CANT_RENEW_DHCP_STR, value);
		break;

	case IPC_EVENT_ERROR_FAILED_TO_BIND:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_FAILED_TO_BIND_STR, value);
		break;

	case IPC_EVENT_ERROR_FAILED_TO_GET_HANDLE:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_FAILED_TO_GET_HANDLE_STR, value);
		break;

	case IPC_EVENT_ERROR_EVENT_HANDLE_FAILED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_EVENT_HANDLE_FAILED_STR, value);
		break;

	case IPC_EVENT_ERROR_WMI_ATTACH_FAILED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_WMI_ATTACH_FAILED_STR, value);
		break;

	case IPC_EVENT_ERROR_WMI_ASYNC_FAILED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_WMI_ASYNC_FAILED_STR, value);
		break;

	case IPC_EVENT_ERROR_CANT_ADD_CERT_TO_STORE:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_CANT_ADD_CERT_TO_STORE_STR, value);
		break;
		
	case IPC_EVENT_ERROR_CANT_READ_FILE:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_CANT_READ_FILE_STR, value);
		break;

	case IPC_EVENT_ERROR_CERT_CHAIN_IS_INVALID:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_CERT_CHAIN_IS_INVALID, value);
		break;

	case IPC_EVENT_ERROR_NOT_SUPPORTED:
		xsupgui_events_build_error(errstr, IPC_EVENT_ERROR_NOT_SUPPORTED_STR, value);
		break;

	default:
		xsupgui_events_build_error(errstr, "Unknown error event!", NULL);
		break;
	}

	free(value);

done:
//	xsupgui_free_event_doc();

	return retval;
}

/**
 * \brief Catch a UI event and return it's event number, and the interface (if any)
 *        that caused the event generation.
 *
 * @param[out] evtnum   The event number that was triggered.
 * @param[out] intname   The OS specific interface name that generated the event.
 * @param[out] param   The parameter value that came with this UI event.  (May return NULL!)
 *
 * \retval 0 on success
 * \retval <0 on failure
 **/
int xsupgui_events_get_ui_event(int *evtnum, char **intname, char **param)
{
	xmlDocPtr doc = NULL;
	xmlNodePtr root = NULL, t = NULL, n = NULL;
	char *value;
	int code;
	int retval = 0;

	doc = xsupgui_get_event_doc();
	if (doc == NULL) 
	{
//		xsupgui_free_event_doc();
		return -1;
	}

	root = xmlDocGetRootElement(doc);
	if (root == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = xsupgui_request_find_node(root->children, "UI_Event");
	if (t == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = t->children;

	n = xsupgui_request_find_node(t, "Event_Code");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*evtnum) = atoi(value);

	free(value);

	(*intname) = NULL;

	n = xsupgui_request_find_node(t, "Interface");
	if (n != NULL)
	{
		(*intname) = xmlNodeGetContent(n);
	}
	
	n = xsupgui_request_find_node(t, "Parameter");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	(*param) = xmlNodeGetContent(n);

done:
//	xsupgui_free_event_doc();

	return retval;
}

/**
 * \brief Catch a TNC UI event, and return it's IANA OUI, and event number.
 *
 * @param[out] oui   The IANA OUI that generated this event.
 * @param[out] notification   The index in to the message catalog that identifies
 *                            what the UI should display.
 *
 * \retval 0 on success
 * \retval <0 on failure
 **/
int xsupgui_events_get_tnc_ui_event(uint32_t *oui, uint32_t *notification)
{
	xmlDocPtr doc = NULL;
	xmlNodePtr root = NULL, t = NULL, n = NULL;
	char *value;
	int code;
	int retval = 0;

	doc = xsupgui_get_event_doc();
	if (doc == NULL) 
	{
//		xsupgui_free_event_doc();
		return -1;
	}

	root = xmlDocGetRootElement(doc);
	if (root == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = xsupgui_request_find_node(root->children, "TNC_Event");
	if (t == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = t->children;

	n = xsupgui_request_find_node(t, "OUI");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*oui) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "Notification");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*notification) = atoi(value);
	free(value);

done:
//	xsupgui_free_event_doc();

	return retval;
}

/**
 * \brief Catch a TNC UI event that needs an action, and return it's IANA OUI, 
 *        and request number.
 *
 * @param[out] imcID   The ID of the IMC that generated this event.
 * @param[out] connID   The connection ID the IMC uses to identify this connection.
 * @param[out] oui   The IANA OUI that generated this event.
 * @param[out] request   The index in to the message catalog that identifies
 *                       which request the UI should display.
 *
 * \retval 0 on success
 * \retval <0 on failure
 **/
int xsupgui_events_get_tnc_ui_request_event(uint32_t *imcID, uint32_t *connID, 
											uint32_t *oui, uint32_t *request)
{
	xmlDocPtr doc = NULL;
	xmlNodePtr root = NULL, t = NULL, n = NULL;
	char *value;
	int code;
	int retval = 0;

	doc = xsupgui_get_event_doc();
	if (doc == NULL) 
	{
//		xsupgui_free_event_doc();
		return -1;
	}

	root = xmlDocGetRootElement(doc);
	if (root == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = xsupgui_request_find_node(root->children, "TNC_Request_Event");
	if (t == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = t->children;

	n = xsupgui_request_find_node(t, "imcID");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*imcID) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "connID");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*connID) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "OUI");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*oui) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "Request");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*request) = atoi(value);
	free(value);

done:
//	xsupgui_free_event_doc();

	return retval;
}

/**
 * \brief Following an IPC_EVENT_TNC_UI_BATCH_REQUEST event, gather all of the data about the
 *        event.
 *
 * @param[out] oui   The vendor specific OUI that triggered the batch.
 * @param[out] msgid   The vendor specific message ID that triggered the batch.
 * @param[out] batch   A NULL terminated array of messages in the batch.
 *
 * \retval 0 on success
 * \retval <0 on failure.
 **/
int xsupgui_events_get_tnc_ui_batch_request_event(uint32_t *imcID, uint32_t *connID, uint32_t *oui, uint32_t *msgid, tnc_msg_batch **batch)
{
	xmlDocPtr doc = NULL;
	xmlNodePtr root = NULL, t = NULL, n = NULL, item = NULL;
	char *value;
	int items = 0;
	int retval = 0;
	int i = 0;
	tnc_msg_batch *data = NULL;

	doc = xsupgui_get_event_doc();
	if (doc == NULL) 
	{
//		xsupgui_free_event_doc();
		return -1;
	}

	root = xmlDocGetRootElement(doc);
	if (root == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = xsupgui_request_find_node(root->children, "TNC_Request_Batch_Event");
	if (t == NULL) 
	{
		retval = -1;
		goto done;
	}

	t = t->children;

	n = xsupgui_request_find_node(t, "imcID");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*imcID) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "connID");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*connID) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "OUI");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*oui) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "MsgID");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	(*msgid) = atoi(value);
	free(value);

	n = xsupgui_request_find_node(t, "Items");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	value = xmlNodeGetContent(n);

	items = atoi(value);
	free(value);

	// "items" contains the number of items that are in the batch.  So
	// allocate some memory to store the items.
	data = malloc(((items+1) * sizeof(tnc_msg_batch)));
	if (data == NULL)
	{
		retval = -1;
		goto done;
	}

	memset(data, 0x00, ((items+1) * sizeof(tnc_msg_batch)));

	n = xsupgui_request_find_node(t, "Batch");
	if (n == NULL)
	{
		retval = -1;
		goto done;
	}

	n = n->children;

	for (i = 0; i < items; i++)
	{
		// Now, parse each item in the batch.
		t = xsupgui_request_find_node(n, "Item");
		if (t == NULL)
		{
			retval = -1;
			goto done;
		}

		item = xsupgui_request_find_node(t->children, "imcID");
		if (item == NULL)
		{
			retval = -1;
			goto done;
		}

		value = xmlNodeGetContent(item);
		data[i].imcID = atoi(value);
		free(value);

		item = xsupgui_request_find_node(t->children, "connectionID");
		if (item == NULL)
		{
			retval = -1;
			goto done;
		}

		value = xmlNodeGetContent(item);
		data[i].connectionID = atoi(value);
		free(value);

		item = xsupgui_request_find_node(t->children, "OUI");
		if (item == NULL)
		{
			retval = -1;
			goto done;
		}

		value = xmlNodeGetContent(item);
		data[i].oui = atoi(value);
		free(value);

		item = xsupgui_request_find_node(t->children, "MsgID");
		if (item == NULL)
		{
			retval = -1;
			goto done;
		}

		value = xmlNodeGetContent(item);
		data[i].msgid = atoi(value);
		free(value);

		item = xsupgui_request_find_node(t->children, "Parameter");
		if (item == NULL)
		{
			retval = -1;
			goto done;
		}

		value = xmlNodeGetContent(item);

		if ((value != NULL) || (strlen(value) != 0))
		{
			data[i].parameter = value;
		}
		else
		{
			free(value);
		}

		n = n->next;
	}

	(*batch) = data;

done:
//	xsupgui_free_event_doc();

	return retval;
}

/**
 * \brief Free the memory that was used in the TNC message batch.
 *
 * @param[in] data   The TNC message batch that we want to free the members of.
 **/
void xsupgui_events_free_tnc_msg_batch_data(tnc_msg_batch **data)
{
	int i = 0;
	tnc_msg_batch *batch = NULL;

	batch = (*data);

	while (batch[i].oui != 0)
	{
		free(batch[i].parameter);
		batch[i].parameter = 0;

		i++;
	}

	free((*data));

	(*data) = NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -