MME2 changes - Propped commits from openmme/paging branch. Added scripts
for code gen
Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
diff --git a/include/s1ap/s1ap.h b/include/s1ap/s1ap.h
new file mode 100644
index 0000000..b955a03
--- /dev/null
+++ b/include/s1ap/s1ap.h
@@ -0,0 +1,143 @@
+/*
+ * 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 __S1AP_H_
+#define __S1AP_H_
+
+#include <stdbool.h>
+
+#include "s1ap_structs.h"
+#include "log.h"
+#include "s1ap_ie.h"
+#include "InitiatingMessage.h"
+#include "SuccessfulOutcome.h"
+#include "UnsuccessfulOutcome.h"
+#include "common_proc_info.h"
+
+int
+s1_init_ctx_resp_handler(SuccessfulOutcome_t *msg);
+
+int
+parse_IEs(char *msg, struct proto_IE *proto_ies, unsigned short proc_code);
+
+int convertToInitUeProtoIe(InitiatingMessage_t *msg, struct proto_IE* proto_ies);
+int convertUplinkNasToProtoIe(InitiatingMessage_t *msg, struct proto_IE* proto_ies);
+int convertUeCtxRelReqToProtoIe(InitiatingMessage_t *msg, struct proto_IE* proto_ies);
+int convertInitCtxRspToProtoIe(SuccessfulOutcome_t *msg, struct proto_IE* proto_ies);
+int convertUeCtxRelComplToProtoIe(SuccessfulOutcome_t *msg, struct proto_IE* proto_ies);
+
+int
+s1_setup_handler(InitiatingMessage_t *msg, int enb_fd);
+
+int
+s1_init_ue_handler(struct proto_IE *s1_init_ies, int enb_fd);
+
+void
+handle_s1ap_message(void *message);
+
+int
+init_s1ap();
+
+void
+read_config();
+
+void*
+IAM_handler(void *data);
+
+int s1_esm_resp_handler(struct proto_IE *s1_esm_resp_ies);
+
+int s1_secmode_resp_handler(struct proto_IE *s1_sec_resp_ies);
+
+int s1_auth_resp_handler(struct proto_IE *s1_auth_resp_ies);
+
+int s1_auth_fail_handler(struct proto_IE *s1_auth_resp_ies);
+
+int s1_identity_resp_handler(struct proto_IE *s1_id_resp_ies);
+
+int s1_attach_complete_handler(struct proto_IE *s1_esm_resp_ies);
+
+int
+detach_stage1_handler(struct proto_IE *detach_ies, bool retransmit);
+
+int
+s1_init_ue_service_req_handler(struct proto_IE *service_req_ies, int enb_fd);
+
+int
+tau_request_handler(struct proto_IE *s1_tau_req_ies, int enb_fd);
+
+int
+s1_ctx_release_resp_handler(SuccessfulOutcome_t *msg);
+
+int
+s1_ctx_release_request_handler(InitiatingMessage_t *msg);
+
+int
+s1_ctx_release_complete_handler(SuccessfulOutcome_t *msg);
+
+int
+detach_accept_from_ue_handler(struct proto_IE *detach_ies, bool retransmit);
+
+int s1ap_mme_encode_ue_context_release_command(
+ struct s1ap_common_req_Q_msg *s1apPDU,
+ uint8_t **buffer, uint32_t *length);
+
+int s1ap_mme_encode_paging_request(
+ struct s1ap_common_req_Q_msg *s1apPDU,
+ uint8_t **buffer, uint32_t *length);
+
+int s1ap_mme_encode_initiating(
+ struct s1ap_common_req_Q_msg *s1apPDU,
+ uint8_t **buffer, uint32_t *length);
+
+int s1ap_mme_encode_initial_context_setup_request(
+ struct s1ap_common_req_Q_msg *s1apPDU,
+ uint8_t **buffer, uint32_t *length);
+
+int
+s1ap_mme_decode_initiating (InitiatingMessage_t *initiating_p, int enb_fd);
+
+int
+s1ap_mme_decode_successfull_outcome (SuccessfulOutcome_t *initiating_p);
+
+int
+s1ap_mme_decode_unsuccessfull_outcome (UnsuccessfulOutcome_t *initiating_p);
+
+int
+copyU16(unsigned char *buffer, uint32_t val);
+
+int
+send_sctp_msg(int connSock, unsigned char *buffer, size_t len, uint16_t stream_no);
+
+void
+buffer_copy(struct Buffer *buffer, void *value, size_t size);
+
+/**
+ * @brief Decode int value from the byte array received in the s1ap incoming
+ * packet.
+ * @param[in] bytes - Array of bytes in packet
+ * @param[in] len - Length of the bytes array from which to extract the int
+ * @return Integer value extracted out of bytes array. 0 if failed.
+ */
+int
+decode_int_val(unsigned char *bytes, short len);
+
+char*
+msg_to_hex_str(const char *msg, int len, char **buffer);
+
+unsigned short
+get_length(char **msg);
+#endif /*__S1AP_H_*/