148 lines
4.6 KiB
C
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
|
|
****************************************************************************
|
|
*/
|