📄 ipctest.c
字号:
/**
* 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 + -