diff --git a/include/s6a/s6a.h b/include/s6a/s6a.h
new file mode 100644
index 0000000..e4aa383
--- /dev/null
+++ b/include/s6a/s6a.h
@@ -0,0 +1,96 @@
+/*
+ * 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*/
