/***********************************************************************
 * 
 *  Copyright (C) 2006 Novell, Inc. All Rights Reserved.
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; version 2.1
 *  of the License.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Library Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, Novell, Inc.
 * 
 *  To contact Novell about this file by physical or electronic mail, 
 *  you may find current contact information at www.novell.com.
 * 
 *  Author: Juan Carlos Luciani <jluciani@novell.com>
 *
 ***********************************************************************/

#ifndef _INTERNAL_H_
#define _INTERNAL_H_

//===[ Include files ]=====================================================

#include "platform.h"
#include <expat.h>
#include <micasa_types.h>
#include <casa_status.h>
#include <casa_s_authtoken.h>
#include "config_if.h"
#include "iden_token_provider_if.h"
#include "list_entry.h"

//===[ Type definitions ]==================================================

//===[ Inlines functions   ]===============================================

//===[ Function prototypes ]===============================================

//===[ Global variables ]==================================================

//===[ Global externals ]==================================================

extern int  DebugLevel;

//===[ External prototypes ]===============================================

//
// Defined in identoken.c
//

extern
CasaStatus
GetIdenTokenInterface(
   IN       const char     *pTokenBuf,
   IN       const uint32_t tokenLen,
   INOUT    IdenTokenIf    **ppIdenTokenIf);

extern
CasaStatus
IdenTokenIfInit(void);

extern
void
IdenTokenIfUninit(void);

//
// Defined in utils.c
//

extern
CasaStatus
EncodeData(
   IN    const void *pData,
   IN    const uint32_t dataLen,
   INOUT char **ppEncodedData,
   INOUT uint32_t *pEncodedDataLen);

extern
CasaStatus
DecodeData(
   IN    const char *pEncodedData,
   IN    const uint32_t encodedDataLen, // Does not include NULL terminator
   INOUT void **ppData,
   INOUT uint32_t *pDataLen);

extern
int
dtoul(
   IN    char *cp,
   IN    int len);

//
// Functions exported by platform.c
// 

extern
HANDLE
PlatAllocMutex(void);

extern
void
PlatDestroyMutex(HANDLE hMutex);

extern
void
PlatAcquireMutex(HANDLE hMutex);

extern
void
PlatReleaseMutex(HANDLE hMutex);


//=========================================================================

#endif // _INTERNAL_H_