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

📄 ipctest.c

📁 linux 下通过802.1认证的安装包
💻 C
📖 第 1 页 / 共 4 页
字号:
/**
 * Licensed under the dual GPL/BSD license.  (See LICENSE file for more info.)
 *
 * \file ipctest.c
 *
 * \author chris@open1x.org
 *
 * $Id: ipctest.c,v 1.1.2.83 2008/01/21 22:51:50 chessing Exp $
 * $Date: 2008/01/21 22:51:50 $
 **/

#ifndef WINDOWS
#include <unistd.h>
#endif

#include <string.h>

#include <libxml/parser.h>

#include <xsupgui.h>
#include <xsupgui_xml_common.h>
#include "../../lib/libxsupconfig/xsupconfig_structs.h"
#include <xsupgui_request.h>

#ifdef WINDOWS
#include "../../src/stdintwin.h"
#else
#define _strdup strdup
#endif

#include "getopts.h"

// Terminate the IPC test program.
void die()
{
	printf("Disconnecting.\n");
	xsupgui_disconnect();
	_exit(1);
}

/**
 * \brief Issue a ping request to the supplicant, and display the result from that
 *        request.
 **/
void doping()
{
	int err = 0;

	printf("Sending a ping..\n\n");
	err = xsupgui_request_ping();

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Ping success!\n");
		break;

	case REQUEST_TIMEOUT:
		printf("Ping timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error!\n");
		die();
		break;

	default:
		printf("Got error %d!\n", err);
		die();
		break;
	}
}

void build_tt()
{
	int err = 0;

	printf("Requesting a trouble ticket be built...\n");
	err = xsupgui_request_create_trouble_ticket_file("c:\\tt.zip", "c:\\", 1);
	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Success!\n");
		break;

	case REQUEST_TIMEOUT:
		printf("timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error!\n");
		die();
		break;

	default:
		printf("Got error %d!\n", err);
		die();
		break;
	}
	printf("\n");	
}

void add_cert()
{
	int err = 0;

	printf("Requesting a new root CA cert be added...\n");
	err = xsupgui_request_add_root_ca_certificate("c:\\root.der");
	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Success!\n");
		break;

	case REQUEST_TIMEOUT:
		printf("timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error!\n");
		die();
		break;

	default:
		printf("Got error %d!\n", err);
		die();
		break;
	}
	printf("\n");	
}

/**
 * \brief Issue a request to reload the configuration file.
 **/
void doreload()
{
	int err = 0;

	printf("Requesting a config reload...");
	err = xsupgui_request_reload_config();

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Success!\n");
		break;

	case REQUEST_TIMEOUT:
		printf("timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error!\n");
		die();
		break;

	default:
		printf("Got error %d!\n", err);
		die();
		break;
	}
	printf("\n");
}

/**
 *  \brief Ask the supplicant to terminate itself.
 **/
void doterminate()
{
	int err = 0;

	printf("Requesting the supplicant terminate...");
	err = xsupgui_request_terminate();

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Success!\n");
		break;

	case REQUEST_TIMEOUT:
		printf("timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error!\n");
		die();
		break;

	default:
		printf("Got error %d!\n", err);
		die();
		break;
	}

	printf("\n");
}

/**
 * \brief Display all of the fields that are returned for each trusted server.
 **/
void docerts_list(trusted_servers_enum *data)
{
	int i = 0;

	if (data == NULL)
	{
		printf("NONE!\n");
		return;
	}

	while (data[i].name != NULL)
	{
		printf("%s\n", data[i].name);
		i++;
	}
	printf("\n");
}

/**
 * \brief Request that we enumerate all of the trusted servers that are currently in the
 *        supplicant's memory.
 **/
void docerts_enum()
{
	trusted_servers_enum *mydata = NULL;
	int err = 0;

	printf("Requesting a list of trusted servers..\n\n");
	err = xsupgui_request_enum_trusted_servers(&mydata);

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Trusted Server(s) are :\n");
		docerts_list(mydata);
		xsupgui_request_free_trusted_servers_enum(&mydata);
		break;

	case REQUEST_TIMEOUT:
		printf("Trusted Servers enum request timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error getting trusted servers list!\n");
		die();
		break;
		
	default:
		printf("Error : %d\n", err);
		//die();
		break;
	}
}

/**
 * \brief Display all of the fields that are returned for each interface
 *        when we enumerate all interfaces.
 **/
void doint_list(int_enum *data)
{
	int i = 0;

	if (data == NULL)
	{
		printf("NONE!\n");
		return;
	}

	while (data[i].name != NULL)
	{
		printf("(%d) %s\n\t%s\n", i+1, data[i].desc, data[i].name);
		if (data[i].is_wireless == 1)
		{
			printf("\t\tInterface is Wireless!\n");
		}
		else
		{
			printf("\t\tInterface is NOT wireless!\n");
		}
		i++;
	}
	printf("\n");
}

/**
 * \brief Request that we enumerate all of the interfaces that the supplicant
 *        currently knows about.
 **/
void doint_enum()
{
	int_enum *mydata = NULL;
	int err = 0;

	printf("Requesting a list of interfaces..\n\n");
	err = xsupgui_request_enum_live_ints(&mydata);

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Interfaces are :\n");
		doint_list(mydata);
		break;

	case REQUEST_TIMEOUT:
		printf("Interface list request timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error getting interface list!\n");
		die();
		break;
		
	default:
		printf("Error : %d\n", err);
		die();
		break;
	}

	xsupgui_request_free_int_enum(&mydata);
}

/**
 * \brief Display all of the fields that are returned for each interface
 *        when we enumerate all interfaces.
 **/
void doint_conf_list(int_config_enum *data)
{
	int i = 0;

	if (data == NULL)
	{
		printf("NONE!\n");
		return;
	}

	while (data[i].desc != NULL)
	{
		printf("(%d) %s -- %s\n", i+1, data[i].desc, data[i].mac);
		i++;
	}
	printf("\n");
}

/**
 * \brief Request that we enumerate all of the interfaces that the supplicant
 *        configuration file currently knows about.
 **/
void doint_conf_enum()
{
	int_config_enum *mydata = NULL;
	int err = 0;

	printf("Requesting a list of interfaces (from the configuration)..\n\n");
	err = xsupgui_request_enum_ints_config(&mydata);

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Interfaces are :\n");
		doint_conf_list(mydata);
		break;

	case REQUEST_TIMEOUT:
		printf("Interface list request timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error getting interface list!\n");
		die();
		break;
		
	default:
		printf("Error : %d\n", err);
		die();
		break;
	}

	xsupgui_request_free_int_config_enum(&mydata);
}


void doprof_list(profile_enum *profs)
{
	int i = 0;

	while (profs[i].name != NULL)
	{
		printf("\tProfile : %s\n", profs[i].name);
		i++;
	}
	printf("\n");
}

/**
 * \brief Request that we enumerate all of the profiles that are currently in the
 *        supplicant's memory.
 **/
void doprof_enum()
{
	profile_enum *mydata = NULL;
	int err = 0;

	printf("Requesting a list of profiles..\n\n");
	err = xsupgui_request_enum_profiles(&mydata);

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("Profiles are :\n");
		doprof_list(mydata);
		break;

	case REQUEST_TIMEOUT:
		printf("Profile enum request timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error getting interface list!\n");
		die();
		break;
		
	default:
		printf("Error : %d\n", err);
		die();
		break;
	}

	xsupgui_request_free_profile_enum(&mydata);
}

/**
 * \brief  Display information about each EAP type that came from the request to
 *         enumerate known EAP types.
 **/
void doeap_list(eap_enum *data)
{
	int i = 0;

	if (data == NULL)
	{
		printf("NONE!\n");
		return;
	}

	while (data[i].name != NULL)
	{
		printf("(%d) %s - Type %d\n", i+1, data[i].name, data[i].num);
		i++;
	}
	printf("\n");
}

/**
 * \brief Request that the supplicant enumerate all of the EAP methods that it was
 *        built with.
 **/
void doeap_enum()
{
	eap_enum *mydata = NULL;
	int err = 0;

	printf("Requesting a list of EAP methods..\n\n");
	err = xsupgui_request_enum_eap_methods(&mydata);

	switch(err)
	{
	case REQUEST_SUCCESS:
		printf("EAP methods are :\n");
		doeap_list(mydata);
		break;

	case REQUEST_TIMEOUT:
		printf("EAP method list request timed out!\n");
		die();
		break;

	case REQUEST_FAILURE:
		printf("Error getting EAP method list!\n");
		die();
		break;
		
	default:
		printf("Error : %d\n", err);
		die();
		break;
	}

	xsupgui_request_free_eap_enum(&mydata);
}

/**
 *  \brief Request the state of the 802.1X state machine, and display display
 *         a string that identifies the state.
 *
 *  @param[in] intname   The OS specific interface name.
 **/
void doget1xstate(char *intname)
{
	int result;

	printf("802.1X state for test interface : ");
	if (xsupgui_request_get_1x_state(intname, &result) != REQUEST_SUCCESS)
	{
		printf("Failed!\n");
		die();
		return;
	}

	switch (result)
	{
	case LOGOFF:
		printf("LOGOFF\n");
		break;

	case DISCONNECTED:
		printf("DISCONNECTED\n");
		break;

	case CONNECTING:
		printf("CONNECTING\n");
		break;

	case ACQUIRED:
		printf("ACQUIRED\n");
		break;

	case AUTHENTICATING:
		printf("AUTHENTICATING\n");
		break;

	case HELD:
		printf("HELD\n");
		break;

	case AUTHENTICATED:
		printf("AUTHENTICATED\n");
		break;

	case RESTART:
		printf("RESTART\n");
		break;

	case S_FORCE_AUTH:
		printf("S_FORCE_AUTH\n");
		break;

	case S_FORCE_UNAUTH:
		printf("S_FORCE_UNAUTH\n");
		break;

	default:
		printf("Unknown value %d!\n", result);
		break;
	}
	printf("\n");
}

/**
 *  \brief  Request that the supplicant tell us what state the EAP state machine
 *          is currently in.
 **/
void dogeteapstate(char *device)
{
	int retval = 0;

	printf("EAP state for test interface : ");
	if (xsupgui_request_get_eap_state(device, &retval) != REQUEST_SUCCESS)
	{
		printf("Failed!\n");
		die();
		return;
	}

	switch (retval)
	{
	case EAP_UNKNOWN:
		printf("UNKNOWN\n");
		break;

	case EAP_DISABLED:
		printf("DISABLED\n");
		break;

	case EAP_INITIALIZE:
		printf("INITIALIZE\n");
		break;

	case EAP_IDLE:
		printf("IDLE\n");
		break;

	case EAP_RECEIVED:
		printf("RECEIVED\n");
		break;

	case EAP_GET_METHOD:
		printf("GET_METHOD\n");
		break;

	case EAP_METHOD:
		printf("METHOD\n");
		break;

	case EAP_SEND_RESPONSE:
		printf("SEND_RESPONSE\n");
		break;

	case EAP_DISCARD:
		printf("DISCARD\n");
		break;

	case EAP_IDENTITY:
		printf("IDENTITY\n");
		break;

	case EAP_NOTIFICATION:
		printf("NOTIFICATION\n");
		break;

	case EAP_RETRANSMIT:
		printf("RETRANSMIT\n");
		break;

	case EAP_SUCCESS:
		printf("SUCCESS\n");
		break;

	case EAP_FAILURE:
		printf("FAILURE\n");
		break;

	default:
		printf("Got unknown state %d.\n", retval);
		break;
	}
	printf("\n");
}

/**
 *  \brief  Request that the supplicant give us the state that the backend state
 *          machine is currently in.  Then, display it in a human readable format.
 *

⌨️ 快捷键说明

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