Files
m241Neelima/components/ip_net2-6.9/ipike/src/ipike_doi.c
T
2026-07-30 11:19:44 +05:30

148 lines
4.6 KiB
C

/*
******************************************************************************
* SOURCE FILE
*
* Document no: @(#) $Name: VXWORKS_ITER40_2019102207 $ $RCSfile: ipike_doi.c,v $ $Revision: 1.11 $
* $Source: /home/interpeak/CVSRoot/ipike/src/ipike_doi.c,v $
* $Author: edahlber $ $Date: 2010-12-13 09:23:13 $
* $State: Exp $ $Locker: $
*
* INTERPEAK_COPYRIGHT_STRING
* Design and implementation by Kenneth Jonsson <kenneth@interpeak.se>
******************************************************************************
*/
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
*/
/*
****************************************************************************
* 2 CONFIGURATION
****************************************************************************
*/
#include "ipike_config.h"
/*
****************************************************************************
* 3 INCLUDE FILES
****************************************************************************
*/
#include "ipike_doi.h"
#include "ipike_payload.h"
#include "ipike_payload_sa.h"
#include "ipike_util.h"
#include "ipike_h.h"
/*
****************************************************************************
* 4 EXTERN PROTOTYPES
****************************************************************************
*/
/*
****************************************************************************
* 5 DEFINES
****************************************************************************
*/
/*
****************************************************************************
* 6 TYPES
****************************************************************************
*/
/*
****************************************************************************
* 7 LOCAL PROTOTYPES
****************************************************************************
*/
/*
****************************************************************************
* 8 DATA
****************************************************************************
*/
/*
****************************************************************************
* 9 LOCAL FUNCTIONS
****************************************************************************
*/
/*
****************************************************************************
* 10 PUBLIC FUNCTIONS
****************************************************************************
*/
/*
*===========================================================================
* ipike_doi_to_string
*===========================================================================
*/
IP_GLOBAL const char*
ipike_doi_to_string(Ip_u32 doi)
{
const char* s;
if ((ipike_map_string(ipike.doi_map, (int) doi, &s)))
return "invalid domain of interpretation";
return s;
}
/*
*===========================================================================
* ipike_doi_from_string
*===========================================================================
*/
IP_GLOBAL Ipike_error
ipike_doi_from_string(const char* str_doi, Ip_u32* doi)
{
Ipike_error err;
int t_doi;
err = ipike_map_int(ipike.doi_map, str_doi, &t_doi);
*doi = (Ip_u32) t_doi;
return err;
}
/*
*===========================================================================
* ipike_get_doi
*===========================================================================
*/
IP_GLOBAL Ipike_error
ipike_get_doi(Ipike_isakmp_header* isakmp, Ip_u32* doi)
{
Ipike_payload_header* payload;
Ip_u8 this_payload;
Ipike_payload_enum ctx;
this_payload = isakmp->next_payload;
payload = ipike_first_payload(isakmp, &ctx);
while (payload != IP_NULL && this_payload != IPIKE_PAYLOAD_SECURITY_ASSOCIATION)
{
this_payload = payload->next_payload;
payload = ipike_next_payload(&ctx);
}
ipike_free_payload_enumerator(&ctx);
if (payload == IP_NULL)
return IPIKE_FAILED;
if (this_payload == IPIKE_PAYLOAD_SECURITY_ASSOCIATION)
*doi = ip_ntohl(((Ipike_sa_payload*) payload)->doi);
return IPIKE_SUCCESS;
}
/*
****************************************************************************
* END OF FILE
****************************************************************************
*/