/* ****************************************************************************** * 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 ****************************************************************************** */ /* **************************************************************************** * 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 **************************************************************************** */