blob: e4aa383947ffcb9e4c0a36667c67fcdd2b39e365 [file] [log] [blame]
/*
* Copyright (c) 2003-2018, Great Software Laboratory Pvt. Ltd.
* Copyright (c) 2017 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __S6A_H_
#define __S6A_H_
#include <freeDiameter/freeDiameter-host.h>
#include <freeDiameter/libfdproto.h>
#include <freeDiameter/libfdcore.h>
#include "log.h"
#include "hss_message.h"
#define S6A_FD_CONF "conf/s6a_fd.conf"
#define HSS_RESP_THREADPOOL_SIZE 10
#define STR_IMSI_LEN 16
#define SESS_ID_LEN 128
/**
* brief: Structure to store s6a freediameter session information
*/
struct s6a_sess_info {
unsigned char imsi[8];
char sess_id[SESS_ID_LEN];
int sess_id_len;
};
/**
* @brief Handle HSS reponse message
* @param[in] message buffer
* @return void
*/
void
hss_resp_handler(void *message);
/**
* @brief Handler thread for AIR/ULR request coming from mme-app
* This function sends both AIR and ULR
* @param[in] data- message buffer
* @return void*
*/
void*
AIR_handler(void *data);
/**
* @brief Handler thread for detach request coming from mme-app
* @param[in] data- message buffer
* @return void *
*/
void*
detach_handler(void *data);
/*Handler for AIA coming from built in perf HS*/
void
handle_perf_hss_aia(int ue_idx, struct hss_aia_msg *aia);
/*Handler for ULA coming from built in perf HS*/
void
handle_perf_hss_ula(int ue_idx, struct hss_ula_msg *ula);
/*Handler for AIA coming from built in perf HS*/
void
handle_perf_hss_purge_resp(int ue_idx);
//NI Detach
/*Handler for CLR coming from built in perf HSS*/
void
handle_perf_hss_clr(int ue_idx, struct hss_clr_msg *clr);
/**
* @brief convert binary imsi to string imsi
* Binary imsi is stored in 8 bytes, each nibble representing each imsi char.
* char imsi stroes each char in 1 byte.
* @param[in] b_imsi : Binary imsi
* @param[out] s_imsi : Converted string imsi
* @return void
*/
void
imsi_bin_to_str(unsigned char *b_imsi, char *s_imsi);
#endif /*S6A*/