original files of m241
This commit is contained in:
@@ -0,0 +1,469 @@
|
||||
|
||||
/*
|
||||
******************************************************************************
|
||||
* INTERPEAK SOURCE FILE
|
||||
*
|
||||
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipmipha_cli.c,v $ $Revision: 1.2 $
|
||||
* $Source: /home/interpeak/CVSRoot/ipmipha/src/ipmipha_cli.c,v $
|
||||
* $Author: jhorteli $
|
||||
* $State: Exp $ $Locker: $
|
||||
*
|
||||
* INTERPEAK_COPYRIGHT_STRING
|
||||
* Design and implementation by Joel Hortelius <joel.hortelis@interpeak.se>
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 2 CONFIGURATION
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#include "ipmipha_config.h"
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 3 INCLUDE FILES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#define IPCOM_USE_CLIB_PROTO
|
||||
#include <ipcom_clib.h>
|
||||
#include <ipcom_err.h>
|
||||
#include <ipcom_inet.h>
|
||||
#include <ipcom_ipd.h>
|
||||
#include <ipcom_list.h>
|
||||
#include <ipcom_hash.h>
|
||||
#include <ipcom_os.h>
|
||||
#include <ipcom_sock.h>
|
||||
#include <ipcom_sock.h>
|
||||
#include <ipcom_sock2.h>
|
||||
#include <ipcom_sysctl.h>
|
||||
#include <ipcom_syslog.h>
|
||||
#include <ipcom_route.h>
|
||||
|
||||
#include <ipmip.h>
|
||||
#include <private/ipmip_buffer.h>
|
||||
#include <private/ipmip_util.h>
|
||||
|
||||
#include <ipmip4.h>
|
||||
#include <private/ipmip4_context.h>
|
||||
|
||||
#include "ipmipha.h"
|
||||
#include "ipmipha_attr.h"
|
||||
#include "ipmipha_cli.h"
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 4 DEFINES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 5 TYPES
|
||||
****************************************************************************
|
||||
*/
|
||||
/*
|
||||
****************************************************************************
|
||||
* 6 EXTERN PROTOTYPES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 7 LOCAL PROTOTYPES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 8 DATA
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 9 STATIC FUNCTIONS
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 10 GLOBAL FUNCTIONS
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 11 PUBLIC FUNCTIONS
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
IP_PUBLIC Ip_bool
|
||||
ipmipha_cli_connect(Ipmip_cli_daemon_t *daemon_info)
|
||||
{
|
||||
ipmip_cli_daemon_init(daemon_info, "ipmipha", IPCOM_IPD_ID_IPMIPHA);
|
||||
return ipmip_cli_daemon_connect(daemon_info);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_daemon_mute(Ipmip_cli_daemon_t *daemon)
|
||||
{
|
||||
Ipmip_cli_daemon_req_t req;
|
||||
|
||||
ipmip_cli_daemon_request_init(&req);
|
||||
ipmip_cli_daemon_request_start(&req, IPMIPHA_CLI_DAEMON_MUTE);
|
||||
ipmip_cli_daemon_request(daemon, &req);
|
||||
ipmip_cli_daemon_request_release(&req);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_daemon_start(Ipmip_cli_daemon_t *daemon)
|
||||
{
|
||||
Ipmip_cli_daemon_req_t req;
|
||||
|
||||
ipmip_cli_daemon_request_init(&req);
|
||||
ipmip_cli_daemon_request_start(&req, IPMIPHA_CLI_DAEMON_START);
|
||||
ipmip_cli_daemon_request(daemon, &req);
|
||||
ipmip_cli_daemon_request_release(&req);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_daemon_stop(Ipmip_cli_daemon_t *daemon)
|
||||
{
|
||||
Ipmip_cli_daemon_req_t req;
|
||||
|
||||
ipmip_cli_daemon_request_init(&req);
|
||||
ipmip_cli_daemon_request_start(&req, IPMIPHA_CLI_DAEMON_STOP);
|
||||
ipmip_cli_daemon_request(daemon, &req);
|
||||
ipmip_cli_daemon_request_release(&req);
|
||||
}
|
||||
|
||||
IP_PUBLIC struct Ipmipha_mib_haRegNodeCounters *
|
||||
ipmipha_cli_daemon_registration_counters(Ipmip_cli_daemon_t *daemon,
|
||||
Ipmip_cli_daemon_req_t *req)
|
||||
{
|
||||
ipmip_cli_daemon_request_start(req, IPMIPHA_CLI_DAEMON_REGISTRATION_COUNTERS);
|
||||
if (ipmip_cli_daemon_request(daemon, req) == IPCOM_SUCCESS)
|
||||
return (struct Ipmipha_mib_haRegNodeCounters *)ipmip_cli_daemon_find_request_data(req, IPMIPHA_CLI_ATTR_DAEMON_REGCOUNTER);
|
||||
|
||||
return IP_NULL;
|
||||
}
|
||||
|
||||
|
||||
IP_PUBLIC int
|
||||
ipmipha_cli_node_list(Ipmip_cli_daemon_t *daemon,
|
||||
Ipmip_cli_daemon_req_t *req,
|
||||
const char *nai,
|
||||
const char *ifname,
|
||||
Ip_u32 hoa)
|
||||
{
|
||||
ipmip_cli_daemon_request_start(req, IPMIPHA_CLI_BC_X_NODE_LIST);
|
||||
|
||||
ipmipha_cli_request_set_ifname(req, ifname);
|
||||
ipmipha_cli_request_set_nai(req, nai);
|
||||
ipmipha_cli_request_set_home_address(req, hoa);
|
||||
|
||||
return ipmip_cli_daemon_request(daemon, req);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_handle_next(Ipmip_attr_iter_t *iter)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_get_u32(ipmip_attr_iter_next(iter, IPMIPHA_CLI_ATTR_BC_X_HANDLE));
|
||||
}
|
||||
|
||||
IP_PUBLIC struct Ipmip_attr *
|
||||
ipmipha_cli_node_get(Ipmip_cli_daemon_t *daemon,
|
||||
Ipmip_cli_daemon_req_t *req,
|
||||
Ip_u32 handle)
|
||||
{
|
||||
ipmip_cli_daemon_request_start(req, IPMIPHA_CLI_BC_X_NODE_GET);
|
||||
|
||||
ipmipha_cli_request_set_handle(req, handle);
|
||||
|
||||
if (ipmip_cli_daemon_request(daemon, req) == IPCOM_SUCCESS)
|
||||
return ipmip_cli_daemon_find_request(req, IPMIPHA_CLI_ATTR_BC_X);
|
||||
|
||||
return IP_NULL;
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_node_delete(Ipmip_cli_daemon_t *daemon,
|
||||
Ip_u32 handle)
|
||||
{
|
||||
Ipmip_cli_daemon_req_t req;
|
||||
|
||||
ipmip_cli_daemon_request_init(&req);
|
||||
ipmip_cli_daemon_request_start(&req, IPMIPHA_CLI_BC_X_NODE_DELETE);
|
||||
ipmipha_cli_request_set_handle(&req, handle);
|
||||
ipmip_cli_daemon_request(daemon, &req);
|
||||
ipmip_cli_daemon_request_release(&req);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_node_revoke(Ipmip_cli_daemon_t *daemon,
|
||||
Ip_u32 handle)
|
||||
{
|
||||
Ipmip_cli_daemon_req_t req;
|
||||
|
||||
ipmip_cli_daemon_request_init(&req);
|
||||
ipmip_cli_daemon_request_start(&req, IPMIPHA_CLI_BC_X_NODE_REVOKE);
|
||||
ipmipha_cli_request_set_handle(&req, handle);
|
||||
ipmip_cli_daemon_request(daemon, &req);
|
||||
ipmip_cli_daemon_request_release(&req);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_request_set_nai(Ipmip_cli_daemon_req_t *req,
|
||||
const char *nai)
|
||||
{
|
||||
if (nai)
|
||||
ipmip_attr_put_str(&req->reqbuf, IPMIPHA_CLI_ATTR_BC_X_NAI, nai);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_request_set_handle(Ipmip_cli_daemon_req_t *req,
|
||||
Ip_u32 handle)
|
||||
{
|
||||
ipmip_attr_put_u32(&req->reqbuf, IPMIPHA_CLI_ATTR_BC_X_HANDLE, handle);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_request_set_home_address(Ipmip_cli_daemon_req_t *req,
|
||||
Ip_u32 hoa)
|
||||
{
|
||||
if (hoa)
|
||||
ipmip_attr_put_inet(&req->reqbuf, IPMIPHA_CLI_ATTR_BC_X_HOA, hoa);
|
||||
}
|
||||
|
||||
IP_PUBLIC void
|
||||
ipmipha_cli_request_set_ifname(Ipmip_cli_daemon_req_t *req,
|
||||
const char *ifname)
|
||||
{
|
||||
if (ifname)
|
||||
ipmip_attr_put_str(&req->reqbuf,IPMIPHA_CLI_ATTR_BC_X_IFNAME, ifname);
|
||||
}
|
||||
|
||||
|
||||
IP_PUBLIC const char *
|
||||
ipmipha_cli_node_get_ifname(struct Ipmip_attr *node)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_str(node, IPMIPHA_CLI_ATTR_BC_X_IFNAME);
|
||||
}
|
||||
|
||||
IP_PUBLIC const char *
|
||||
ipmipha_cli_node_get_nai(struct Ipmip_attr *node)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_str(node, IPMIPHA_CLI_ATTR_BC_X_NAI);
|
||||
}
|
||||
|
||||
IP_PUBLIC const char *
|
||||
ipmipha_cli_node_get_nai_aaah(struct Ipmip_attr *node)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_str(node, IPMIPHA_CLI_ATTR_BC_X_NAI_AAAH);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_node_get_handle(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(node, IPMIPHA_CLI_ATTR_BC_X_HANDLE);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_node_get_home_address(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_inet(node, IPMIPHA_CLI_ATTR_BC_X_HOA);
|
||||
}
|
||||
|
||||
IP_PUBLIC struct Ipmipha_mib_haCounterEntry *
|
||||
ipmipha_cli_node_get_haCounterEntry(struct Ipmip_attr *node)
|
||||
{
|
||||
return (struct Ipmipha_mib_haCounterEntry *)ipmip_attr_payload_find_data(node, IPMIPHA_CLI_ATTR_BC_X_mib_haCounterEntry);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_time_t
|
||||
ipmipha_cli_node_get_created(struct Ipmip_attr *node)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_time_t(node, IPMIPHA_CLI_ATTR_BC_X_CREATION_TIME);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_time_t
|
||||
ipmipha_cli_node_get_last_updated(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_time_t(node, IPMIPHA_CLI_ATTR_BC_X_LAST_UPDATED);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_time_t
|
||||
ipmipha_cli_node_get_AAA_last_verified(struct Ipmip_attr *node)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_time_t(node, IPMIPHA_CLI_ATTR_BC_X_AAA_VERIFICATION_TIME);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_bool
|
||||
ipmipha_cli_node_get_AAA_accounting_enabled(struct Ipmip_attr *node)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_u32(node, IPMIPHA_CLI_ATTR_BC_X_AAA_ACCOUNTING_ENABLED) != 0;
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_node_get_stats_rcv_octets64(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(node, IPMIPHA_CLI_ATTR_BC_X_STATS_RCV_OCTETS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_node_get_stats_rcv_pkts64(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(node, IPMIPHA_CLI_ATTR_BC_X_STATS_RCV_PKTS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_node_get_stats_snd_octets64(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(node, IPMIPHA_CLI_ATTR_BC_X_STATS_SND_OCTETS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_node_get_stats_snd_pkts64(struct Ipmip_attr *node)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(node, IPMIPHA_CLI_ATTR_BC_X_STATS_SND_PKTS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC struct Ipmip_attr *
|
||||
ipmipha_cli_binding_next(Ipmip_attr_iter_t *iter)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_iter_next(iter, IPMIPHA_CLI_ATTR_BC_X_COA);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_time_t
|
||||
ipmipha_cli_binding_get_created(struct Ipmip_attr *binding)
|
||||
{
|
||||
/**/
|
||||
return ipmip_attr_payload_find_time_t(binding, IPMIPHA_CLI_ATTR_BC_X_COA_CREATION_TIME);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_time_t
|
||||
ipmipha_cli_binding_get_last_updated(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_time_t(binding, IPMIPHA_CLI_ATTR_BC_X_COA_LAST_UPDATED);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_binding_get_stats_rcv_octets64(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(binding, IPMIPHA_CLI_ATTR_BC_X_COA_STATS_RCV_OCTETS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_binding_get_stats_rcv_pkts64(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(binding, IPMIPHA_CLI_ATTR_BC_X_COA_STATS_RCV_PKTS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_binding_get_stats_snd_octets64(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(binding, IPMIPHA_CLI_ATTR_BC_X_COA_STATS_SND_OCTETS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u64
|
||||
ipmipha_cli_binding_get_stats_snd_pkts64(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u64(binding, IPMIPHA_CLI_ATTR_BC_X_COA_STATS_SND_PKTS64);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_address(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_inet(binding, IPMIPHA_CLI_ATTR_BC_X_COA_INET);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_tunnel_endpoint(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_inet(binding, IPMIPHA_CLI_ATTR_BC_X_COA_TUNNELING_ENDPOINT);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_tunnel_type(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_TUNNELING_TYPE);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_tunnel_flags(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_TUNNELING_FLAGS);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u16
|
||||
ipmipha_cli_binding_get_tunnel_port(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_TUNNELING_PORT);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_spi_mobile_foreign(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_SPI_MF);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_spi_foreign_home(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_SPI_FH);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_spi_mobile_AAA(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_SPI_AAA);
|
||||
}
|
||||
|
||||
IP_PUBLIC struct Ipmipha_mib_haMobilityBindingEntry *
|
||||
ipmipha_cli_binding_get_haMobilityBindingEntry(struct Ipmip_attr *binding)
|
||||
{
|
||||
return (struct Ipmipha_mib_haMobilityBindingEntry *)ipmip_attr_payload_find_data(binding, IPMIPHA_CLI_ATTR_BC_X_COA_mib_haMobilityBindingEntry);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_time_granted(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPFA_CLI_ATTR_BC_X_COA_TIME_GRANTED);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_time_remaining(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPFA_CLI_ATTR_BC_X_COA_TIME_REMAINING);
|
||||
}
|
||||
|
||||
IP_PUBLIC Ip_u32
|
||||
ipmipha_cli_binding_get_registration_flags(struct Ipmip_attr *binding)
|
||||
{
|
||||
return ipmip_attr_payload_find_u32(binding, IPMIPHA_CLI_ATTR_BC_X_COA_REG_FLAGS);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* END OF FILE
|
||||
****************************************************************************
|
||||
*/
|
||||
Reference in New Issue
Block a user