Commit 885a66eb authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

NAS cleanup

parent e5a87729
This diff is collapsed.
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -19,6 +19,14 @@
* contact@openairinterface.org
*/
/*! \file nas_message.h
\brief
\author
\company EURECOM
\date 2019
\email:
*/
#ifndef NAS_MESSAGE_H_
#define NAS_MESSAGE_H_
......@@ -26,22 +34,22 @@
#include "sm_msg.h"
#include "common_types.h"
//test mac and encrypt/decrypt
#define DIRECTION__ 1//SECU_DIRECTION_DOWNLINK
#define TEST_MAC_ENCRYPT_DECRYPT__ 0
#define NAS_MESSAGE_SECURITY_HEADER_SIZE 7
// test mac and encrypt/decrypt
#define DIRECTION__ 1 // SECU_DIRECTION_DOWNLINK
#define TEST_MAC_ENCRYPT_DECRYPT__ 0
#define NAS_MESSAGE_SECURITY_HEADER_SIZE 7
//Section 9.1 3GPP TS 24.501
// Section 9.1 3GPP TS 24.501
/* Structure of security protected header */
typedef struct nas_message_security_header_s {
#ifdef __LITTLE_ENDIAN_BITFIELD
extended_protocol_discriminator_t extended_protocol_discriminator;
uint8_t security_header_type :4;
uint8_t spare_half_octet :4;
uint8_t security_header_type : 4;
uint8_t spare_half_octet : 4;
#endif
#ifdef __BIG_ENDIAN_BITFIELD
uint8_t spare_half_octet:4;
uint8_t security_header_type:4;
uint8_t spare_half_octet : 4;
uint8_t security_header_type : 4;
#endif
uint32_t message_authentication_code;
uint8_t sequence_number;
......@@ -69,18 +77,28 @@ typedef struct {
} nas_message_t;
typedef struct nas_message_decode_status_s {
uint8_t integrity_protected_message :1;
uint8_t ciphered_message :1;
uint8_t mac_matched :1;
uint8_t security_context_available :1;
uint8_t integrity_protected_message : 1;
uint8_t ciphered_message : 1;
uint8_t mac_matched : 1;
uint8_t security_context_available : 1;
int fivegmm_cause;
} nas_message_decode_status_t;
int nas_message_encode(unsigned char *buffer, const nas_message_t *const msg,
size_t length, void *security);
/*
* Encode layer 3 NAS message
* @param [unsigned char* ] buffer: Pointer to the encoded data buffer
* @param [const nas_message_t* const] msg: L3 NAS message structure to encode
* @param [size_t] length: Maximal capacity of the output buffer
* @param [void*] security: L3 NAS message structure to encode
* @return he number of bytes in the buffer if the data have been successfully
* encoded. A negative error code otherwise.
*/
int nas_message_encode(
unsigned char* buffer, const nas_message_t* const msg, size_t length,
void* security);
int nas_message_decode(const unsigned char *const buffer, nas_message_t *msg,
size_t length, void *security,
nas_message_decode_status_t *status);
int nas_message_decode(
const unsigned char* const buffer, nas_message_t* msg, size_t length,
void* security, nas_message_decode_status_t* status);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -19,15 +19,14 @@
* contact@openairinterface.org
*/
/*****************************************************************************
Source networkDef.h
Version 0.1
Date 2019/08/05
Product NAS stack
Subsystem include
Author BUPT
Description Contains network's global definitions
*****************************************************************************/
/*! \file networkDef.h
\brief Contains network's global definitions
\author BUPT
\company
\date 2019
\email:
*/
#ifndef __NETWORK_DEF_H__
#define __NETWORK_DEF_H__
......@@ -37,15 +36,15 @@
* --------------------------------------
*/
#define NGAP_RRC_ESTABLISHMENT_CAUSE_EMERGENCY 0
#define NGAP_RRC_ESTABLISHMENT_CAUSE_HIGH_PRIORITY_ACCESS 1
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MT_ACCESS 2
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_SIGNALLING 3
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_DATA 4
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_VOICECALL 5
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_VIDEOCALL 6
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_SMS 7
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MPS_PRIORITY_ACCESS 8
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MCS_PRIORITY_ACCESS 9
#define NGAP_RRC_ESTABLISHMENT_CAUSE_EMERGENCY 0
#define NGAP_RRC_ESTABLISHMENT_CAUSE_HIGH_PRIORITY_ACCESS 1
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MT_ACCESS 2
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_SIGNALLING 3
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_DATA 4
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_VOICECALL 5
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_VIDEOCALL 6
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MO_SMS 7
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MPS_PRIORITY_ACCESS 8
#define NGAP_RRC_ESTABLISHMENT_CAUSE_MCS_PRIORITY_ACCESS 9
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -19,48 +19,48 @@
* contact@openairinterface.org
*/
/*****************************************************************************
Source securityDef.h
Version 0.1
Date 2013/05/02
Product NAS stack
Subsystem include
Author Frederic Maurel
Description Contains global security definitions
*****************************************************************************/
/*! \file securityDef.h
\brief Contains global security definitions (NAS Stack)
\author Frederic Maurel
\company Eurecom
\date 2013
\email:
*/
#ifndef FILE_SECURITYDEF_SEEN
#define FILE_SECURITYDEF_SEEN
/*
* Index of the first byte of each fields of the AUTN parameter
*/
#define AUTH_SQN_INDEX 0
#define AUTH_AMF_INDEX (AUTH_SQN_INDEX + AUTH_SQN_SIZE)
#define AUTH_MAC_INDEX (AUTH_AMF_INDEX + AUTH_AMF_SIZE)
#define AUTH_SQN_INDEX 0
#define AUTH_AMF_INDEX (AUTH_SQN_INDEX + AUTH_SQN_SIZE)
#define AUTH_MAC_INDEX (AUTH_AMF_INDEX + AUTH_AMF_SIZE)
/*
* Size of the authentication challenge parameters in bytes
*/
#define AUTH_SQN_SIZE 6 /* Sequence number: 48 bits */
#define AUTH_AK_SIZE 6 /* Anonymity key: 48 bits */
#define AUTH_AMF_SIZE 2 /* Authentication Management Field: 16 bits */
#define AUTH_MAC_SIZE 8 /* Message Authentication Code: 64 bits */
#define AUTH_AUTN_SIZE 16 /* Authentication token: 128 bits
AUTN = (SQN ⊕ AK) || AMF || MAC */
#define AUTH_MACS_SIZE 8 /* Re-synchronization MAC: 64 bits */
#define AUTH_AUTS_SIZE 16 /* Re-synchronization AUT: 128 bits */
#define AUTH_RAND_SIZE 16 /* Random challenge: 128 bits */
#define AUTH_CK_SIZE 16 /* Ciphering key: 128 bits */
#define AUTH_IK_SIZE 16 /* Integrity key: 128 bits */
#define AUTH_RES_SIZE 16 /* Authentication response: 128 bits */
#define AUTH_SNID_SIZE 3 /* Serving network's identity: 24 bits */
#define AUTH_KASME_SIZE 32 /* KASME security key: 256 bits */
#define AUTH_KNAS_INT_SIZE 16 /* NAS integrity key */
#define AUTH_KNAS_ENC_SIZE 16 /* NAS cyphering key */
#define AUTH_KENB_SIZE AUTH_KASME_SIZE /* eNodeB security key */
#define AUTH_SQN_SIZE 6 /* Sequence number: 48 bits */
#define AUTH_AK_SIZE 6 /* Anonymity key: 48 bits */
#define AUTH_AMF_SIZE 2 /* Authentication Management Field: 16 bits */
#define AUTH_MAC_SIZE 8 /* Message Authentication Code: 64 bits */
#define AUTH_AUTN_SIZE \
16 /* Authentication token: 128 bits \
AUTN = (SQN ⊕ AK) || AMF || MAC */
#define AUTH_MACS_SIZE 8 /* Re-synchronization MAC: 64 bits */
#define AUTH_AUTS_SIZE 16 /* Re-synchronization AUT: 128 bits */
#define AUTH_RAND_SIZE 16 /* Random challenge: 128 bits */
#define AUTH_CK_SIZE 16 /* Ciphering key: 128 bits */
#define AUTH_IK_SIZE 16 /* Integrity key: 128 bits */
#define AUTH_RES_SIZE 16 /* Authentication response: 128 bits */
#define AUTH_SNID_SIZE 3 /* Serving network's identity: 24 bits */
#define AUTH_KASME_SIZE 32 /* KASME security key: 256 bits */
#define AUTH_KNAS_INT_SIZE 16 /* NAS integrity key */
#define AUTH_KNAS_ENC_SIZE 16 /* NAS cyphering key */
#define AUTH_KENB_SIZE AUTH_KASME_SIZE /* eNodeB security key */
/* "Separation bit" of AMF field */
#define AUTH_AMF_SEPARATION_BIT(a) ((a) & 0x80)
#define AUTH_AMF_SEPARATION_BIT(a) ((a) &0x80)
/*
* EPS authentication vector
......@@ -73,7 +73,7 @@ typedef struct {
/* Authentication token parameter */
uint8_t autn[AUTH_AUTN_SIZE];
/* Expected Authentication response parameter */
#define AUTH_XRES_SIZE AUTH_RES_SIZE
#define AUTH_XRES_SIZE AUTH_RES_SIZE
uint8_t xres_size;
uint8_t xres[AUTH_XRES_SIZE];
} auth_vector_t;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -28,18 +28,19 @@
#include "PDUSessionAuthenticationCommand.h"
int decode_pdu_session_authentication_command(
pdu_session_authentication_command_msg *pdu_session_authentication_command,
uint8_t *buffer, uint32_t len) {
uint32_t decoded = 0;
pdu_session_authentication_command_msg* pdu_session_authentication_command,
uint8_t* buffer, uint32_t len) {
uint32_t decoded = 0;
int decoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_DECODER(
buffer, PDU_SESSION_AUTHENTICATION_COMMAND_MINIMUM_LENGTH, len);
if ((decoded_result = decode_eap_message(
&pdu_session_authentication_command->eapmessage, 0, buffer + decoded,
len - decoded)) < 0) {
&pdu_session_authentication_command->eapmessage, 0, buffer + decoded,
len - decoded)) < 0) {
return decoded_result;
} else {
decoded += decoded_result;
......@@ -48,16 +49,15 @@ int decode_pdu_session_authentication_command(
while (len - decoded > 0) {
uint8_t ieiDecoded = *(buffer + decoded);
if (ieiDecoded == 0)
break;
if (ieiDecoded == 0) break;
switch (ieiDecoded) {
case PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI:
if ((decoded_result = decode_extended_protocol_configuration_options(
&pdu_session_authentication_command
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_authentication_command
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI, buffer + decoded,
len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -72,31 +72,31 @@ int decode_pdu_session_authentication_command(
}
int encode_pdu_session_authentication_command(
pdu_session_authentication_command_msg *pdu_session_authentication_command,
uint8_t *buffer, uint32_t len) {
uint32_t encoded = 0;
pdu_session_authentication_command_msg* pdu_session_authentication_command,
uint8_t* buffer, uint32_t len) {
uint32_t encoded = 0;
int encoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_ENCODER(
buffer, PDU_SESSION_AUTHENTICATION_COMMAND_MINIMUM_LENGTH, len);
if ((encoded_result = encode_eap_message(
pdu_session_authentication_command->eapmessage, 0, buffer + encoded,
len - encoded)) < 0)
pdu_session_authentication_command->eapmessage, 0, buffer + encoded,
len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
if ((pdu_session_authentication_command->presence
& PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_PRESENCE)
== PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_PRESENCE) {
if ((encoded_result =
encode_extended_protocol_configuration_options(
pdu_session_authentication_command
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI, buffer + encoded,
len - encoded)) < 0) {
if ((pdu_session_authentication_command->presence &
PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_PRESENCE) ==
PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_PRESENCE) {
if ((encoded_result = encode_extended_protocol_configuration_options(
pdu_session_authentication_command
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI, buffer + encoded,
len - encoded)) < 0) {
return encoded_result;
} else {
encoded += encoded_result;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -31,35 +31,20 @@
#include "EAPMessage.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_AUTHENTICATION_COMMAND_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
EAP_MESSAGE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_AUTHENTICATION_COMMAND_MINIMUM_LENGTH ( \
EAP_MESSAGE_MINIMUM_LENGTH_LVE + \
0)
#define PDU_SESSION_AUTHENTICATION_COMMAND_MINIMUM_LENGTH \
(EAP_MESSAGE_MINIMUM_LENGTH_LVE + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_AUTHENTICATION_COMMAND_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_LVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_AUTHENTICATION_COMMAND_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + EAP_MESSAGE_MAXIMUM_LENGTH_LVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI 0x7B
#define PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_PRESENCE (1<<0)
#define PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_IEI 0x7B
#define PDU_SESSION_AUTHENTICATION_COMMAND_EPCO_PRESENCE (1 << 0)
typedef struct pdu_session_authentication_command_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -72,10 +57,10 @@ typedef struct pdu_session_authentication_command_msg_tag {
} pdu_session_authentication_command_msg;
int decode_pdu_session_authentication_command(
pdu_session_authentication_command_msg *pdusessionauthenticationcommand,
uint8_t *buffer, uint32_t len);
pdu_session_authentication_command_msg* pdusessionauthenticationcommand,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_authentication_command(
pdu_session_authentication_command_msg *pdusessionauthenticationcommand,
uint8_t *buffer, uint32_t len);
pdu_session_authentication_command_msg* pdusessionauthenticationcommand,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -28,18 +28,20 @@
#include "PDUSessionAuthenticationComplete.h"
int decode_pdu_session_authentication_complete(
pdu_session_authentication_complete_msg *pdu_session_authentication_complete,
uint8_t *buffer, uint32_t len) {
uint32_t decoded = 0;
pdu_session_authentication_complete_msg*
pdu_session_authentication_complete,
uint8_t* buffer, uint32_t len) {
uint32_t decoded = 0;
int decoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_DECODER(
buffer, PDU_SESSION_AUTHENTICATION_COMPLETE_MINIMUM_LENGTH, len);
if ((decoded_result = decode_eap_message(
&pdu_session_authentication_complete->eapmessage, 0, buffer + decoded,
len - decoded)) < 0) {
&pdu_session_authentication_complete->eapmessage, 0,
buffer + decoded, len - decoded)) < 0) {
return decoded_result;
} else {
decoded += decoded_result;
......@@ -48,16 +50,15 @@ int decode_pdu_session_authentication_complete(
while (len - decoded > 0) {
uint8_t ieiDecoded = *(buffer + decoded);
if (ieiDecoded == 0)
break;
if (ieiDecoded == 0) break;
switch (ieiDecoded) {
case PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI:
if ((decoded_result = decode_extended_protocol_configuration_options(
&pdu_session_authentication_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_authentication_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI, buffer + decoded,
len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -72,30 +73,32 @@ int decode_pdu_session_authentication_complete(
}
int encode_pdu_session_authentication_complete(
pdu_session_authentication_complete_msg *pdu_session_authentication_complete,
uint8_t *buffer, uint32_t len) {
uint32_t encoded = 0;
pdu_session_authentication_complete_msg*
pdu_session_authentication_complete,
uint8_t* buffer, uint32_t len) {
uint32_t encoded = 0;
int encoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_ENCODER(
buffer, PDU_SESSION_AUTHENTICATION_COMPLETE_MINIMUM_LENGTH, len);
if ((encoded_result = encode_eap_message(
pdu_session_authentication_complete->eapmessage, 0, buffer + encoded,
len - encoded)) < 0)
pdu_session_authentication_complete->eapmessage, 0, buffer + encoded,
len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
if ((pdu_session_authentication_complete->presence
& PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_PRESENCE)
== PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_PRESENCE) {
if ((pdu_session_authentication_complete->presence &
PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_PRESENCE) ==
PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_PRESENCE) {
if ((encoded_result = encode_extended_protocol_configuration_options(
pdu_session_authentication_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI, buffer + encoded,
len - encoded)) < 0) {
pdu_session_authentication_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI, buffer + encoded,
len - encoded)) < 0) {
return encoded_result;
} else {
encoded += encoded_result;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -31,35 +31,20 @@
#include "EAPMessage.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_AUTHENTICATION_COMPLETE_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
EAP_MESSAGE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_AUTHENTICATION_COMPLETE_MINIMUM_LENGTH ( \
EAP_MESSAGE_MINIMUM_LENGTH_LVE + \
0)
#define PDU_SESSION_AUTHENTICATION_COMPLETE_MINIMUM_LENGTH \
(EAP_MESSAGE_MINIMUM_LENGTH_LVE + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_AUTHENTICATION_COMPLETE_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_LVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_AUTHENTICATION_COMPLETE_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + EAP_MESSAGE_MAXIMUM_LENGTH_LVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI 0x7B
#define PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_PRESENCE (1<<0)
#define PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_IEI 0x7B
#define PDU_SESSION_AUTHENTICATION_COMPLETE_EPCO_PRESENCE (1 << 0)
typedef struct pdu_session_authentication_complete_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -72,10 +57,10 @@ typedef struct pdu_session_authentication_complete_msg_tag {
} pdu_session_authentication_complete_msg;
int decode_pdu_session_authentication_complete(
pdu_session_authentication_complete_msg *pdusessionauthenticationcomplete,
uint8_t *buffer, uint32_t len);
pdu_session_authentication_complete_msg* pdusessionauthenticationcomplete,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_authentication_complete(
pdu_session_authentication_complete_msg *pdusessionauthenticationcomplete,
uint8_t *buffer, uint32_t len);
pdu_session_authentication_complete_msg* pdusessionauthenticationcomplete,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -28,27 +28,27 @@
#include "PDUSessionAuthenticationResult.h"
int decode_pdu_session_authentication_result(
pdu_session_authentication_result_msg *pdu_session_authentication_result,
uint8_t *buffer, uint32_t len) {
uint32_t decoded = 0;
pdu_session_authentication_result_msg* pdu_session_authentication_result,
uint8_t* buffer, uint32_t len) {
uint32_t decoded = 0;
int decoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_DECODER(
buffer, PDU_SESSION_AUTHENTICATION_RESULT_MINIMUM_LENGTH, len);
while (len - decoded > 0) {
uint8_t ieiDecoded = *(buffer + decoded);
if (ieiDecoded == 0)
break;
if (ieiDecoded == 0) break;
switch (ieiDecoded) {
case PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI:
if ((decoded_result = decode_eap_message(
&pdu_session_authentication_result->eapmessage,
PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_authentication_result->eapmessage,
PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI,
buffer + decoded, len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -58,10 +58,10 @@ int decode_pdu_session_authentication_result(
break;
case PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI:
if ((decoded_result = decode_extended_protocol_configuration_options(
&pdu_session_authentication_result
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_authentication_result
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI, buffer + decoded,
len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -76,34 +76,36 @@ int decode_pdu_session_authentication_result(
}
int encode_pdu_session_authentication_result(
pdu_session_authentication_result_msg *pdu_session_authentication_result,
uint8_t *buffer, uint32_t len) {
uint32_t encoded = 0;
pdu_session_authentication_result_msg* pdu_session_authentication_result,
uint8_t* buffer, uint32_t len) {
uint32_t encoded = 0;
int encoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_ENCODER(
buffer, PDU_SESSION_AUTHENTICATION_RESULT_MINIMUM_LENGTH, len);
if ((pdu_session_authentication_result->presence
& PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_PRESENCE)
== PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_PRESENCE) {
if ((pdu_session_authentication_result->presence &
PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_PRESENCE) ==
PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_PRESENCE) {
if ((encoded_result = encode_eap_message(
pdu_session_authentication_result->eapmessage,
PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI, buffer + encoded,
len - encoded)) < 0)
pdu_session_authentication_result->eapmessage,
PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI,
buffer + encoded, len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
}
if ((pdu_session_authentication_result->presence
& PDU_SESSION_AUTHENTICATION_RESULT_EPCO_PRESENCE)
== PDU_SESSION_AUTHENTICATION_RESULT_EPCO_PRESENCE) {
if ((pdu_session_authentication_result->presence &
PDU_SESSION_AUTHENTICATION_RESULT_EPCO_PRESENCE) ==
PDU_SESSION_AUTHENTICATION_RESULT_EPCO_PRESENCE) {
if ((encoded_result = encode_extended_protocol_configuration_options(
pdu_session_authentication_result->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI, buffer + encoded,
len - encoded)) < 0)
pdu_session_authentication_result
->extendedprotocolconfigurationoptions,
PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI, buffer + encoded,
len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -31,36 +31,22 @@
#include "EAPMessage.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_AUTHENTICATION_RESULT_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
EAP_MESSAGE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_AUTHENTICATION_RESULT_MINIMUM_LENGTH 0
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_AUTHENTICATION_RESULT_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_AUTHENTICATION_RESULT_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI 0x7B
#define PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_AUTHENTICATION_RESULT_EPCO_IEI 0x7B
#define PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_PRESENCE (1<<0)
#define PDU_SESSION_AUTHENTICATION_RESULT_EPCO_PRESENCE (1<<1)
#define PDU_SESSION_AUTHENTICATION_RESULT_EAP_MESSAGE_PRESENCE (1 << 0)
#define PDU_SESSION_AUTHENTICATION_RESULT_EPCO_PRESENCE (1 << 1)
typedef struct pdu_session_authentication_result_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -73,10 +59,10 @@ typedef struct pdu_session_authentication_result_msg_tag {
} pdu_session_authentication_result_msg;
int decode_pdu_session_authentication_result(
pdu_session_authentication_result_msg *pdusessionauthenticationresult,
uint8_t *buffer, uint32_t len);
pdu_session_authentication_result_msg* pdusessionauthenticationresult,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_authentication_result(
pdu_session_authentication_result_msg *pdusessionauthenticationresult,
uint8_t *buffer, uint32_t len);
pdu_session_authentication_result_msg* pdusessionauthenticationresult,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -43,81 +43,52 @@
#include "ExtendedProtocolConfigurationOptions.h"
#include "DNN.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_PDU_SESSION_TYPE_MINIMUM_LENGTH + \
SSC_MODE_MINIMUM_LENGTH + \
QOS_RULES_MINIMUM_LENGTH_LV+ \
SESSION_AMBR_MINIMUM_LENGTH_LV + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
PDU_ADDRESS_MINIMUM_LENGTH + \
GPRS_TIMER_MINIMUM_LENGTH + \
SNSSAI_MINIMUM_LENGTH + \
ALWAYSON_PDU_SESSION_INDICATION_MINIMUM_LENGTH + \
MAPPED_EPS_BEARER_CONTEXTS_MINIMUM_LENGTH + \
EAP_MESSAGE_MINIMUM_LENGTH + \
QOS_FLOW_DESCRIPTIONS_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
DNN_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MINIMUM_LENGTH ( \
_PDU_SESSION_TYPE_MINIMUM_LENGTH + \
SSC_MODE_MINIMUM_LENGTH + \
QOS_RULES_MINIMUM_LENGTH_LVE + \
SESSION_AMBR_MINIMUM_LENGTH_LV + \
0)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MINIMUM_LENGTH \
(_PDU_SESSION_TYPE_MINIMUM_LENGTH + SSC_MODE_MINIMUM_LENGTH + \
QOS_RULES_MINIMUM_LENGTH_LVE + SESSION_AMBR_MINIMUM_LENGTH_LV + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_PDU_SESSION_TYPE_MAXIMUM_LENGTH + \
SSC_MODE_MAXIMUM_LENGTH + \
QOS_RULES_MAXIMUM_LENGTH_LVE + \
SESSION_AMBR_MAXIMUM_LENGTH_LV + \
_5GSM_CAUSE_MAXIMUM_LENGTH_TV + \
PDU_ADDRESS_MAXIMUM_LENGTH_TLV + \
GPRS_TIMER_MAXIMUM_LENGTH_TV + \
SNSSAI_MAXIMUM_LENGTH_TLV + \
ALWAYSON_PDU_SESSION_INDICATION_MAXIMUM_LENGTH + \
MAPPED_EPS_BEARER_CONTEXTS_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
QOS_FLOW_DESCRIPTIONS_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
DNN_MAXIMUM_LENGTH_TLV + \
0)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _PDU_SESSION_TYPE_MAXIMUM_LENGTH + \
SSC_MODE_MAXIMUM_LENGTH + QOS_RULES_MAXIMUM_LENGTH_LVE + \
SESSION_AMBR_MAXIMUM_LENGTH_LV + _5GSM_CAUSE_MAXIMUM_LENGTH_TV + \
PDU_ADDRESS_MAXIMUM_LENGTH_TLV + GPRS_TIMER_MAXIMUM_LENGTH_TV + \
SNSSAI_MAXIMUM_LENGTH_TLV + \
ALWAYSON_PDU_SESSION_INDICATION_MAXIMUM_LENGTH + \
MAPPED_EPS_BEARER_CONTEXTS_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
QOS_FLOW_DESCRIPTIONS_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
DNN_MAXIMUM_LENGTH_TLV + 0)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT__5GSM_CAUSE_IEI 0x59
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_PDU_ADDRESS_IEI 0x29
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_GPRS_TIMER_IEI 0x56
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_SNSSAI_IEI 0x22
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_ALWAYSON_PDU_SESSION_INDICATION_IEI 0x80
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MAPPED_EPS_BEARER_CONTEXTS_IEI 0x75
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_QOS_FLOW_DESCRIPTIONS_IEI 0x79
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EPCO_IEI 0x7B
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_DNN_IEI 0x25
#define PDU_SESSION_ESTABLISHMENT_ACCEPT__5GSM_CAUSE_IEI 0x59
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_PDU_ADDRESS_IEI 0x29
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_GPRS_TIMER_IEI 0x56
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_SNSSAI_IEI 0x22
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_ALWAYSON_PDU_SESSION_INDICATION_IEI \
0x80
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MAPPED_EPS_BEARER_CONTEXTS_IEI 0x75
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_QOS_FLOW_DESCRIPTIONS_IEI 0x79
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EPCO_IEI 0x7B
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_DNN_IEI 0x25
#define PDU_SESSION_ESTABLISHMENT_ACCEPT__5GSM_CAUSE_PRESENCE (1<<0)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_PDU_ADDRESS_PRESENCE (1<<1)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_GPRS_TIMER_PRESENCE (1<<2)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_SNSSAI_PRESENCE (1<<3)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_ALWAYSON_PDU_SESSION_INDICATION_PRESENCE (1<<4)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MAPPED_EPS_BEARER_CONTEXTS_PRESENCE (1<<5)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EAP_MESSAGE_PRESENCE (1<<6)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_QOS_FLOW_DESCRIPTIONS_PRESENCE (1<<7)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EPCO_PRESENCE (1<<8)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_DNN_PRESENCE (1<<9)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT__5GSM_CAUSE_PRESENCE (1 << 0)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_PDU_ADDRESS_PRESENCE (1 << 1)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_GPRS_TIMER_PRESENCE (1 << 2)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_SNSSAI_PRESENCE (1 << 3)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_ALWAYSON_PDU_SESSION_INDICATION_PRESENCE \
(1 << 4)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_MAPPED_EPS_BEARER_CONTEXTS_PRESENCE \
(1 << 5)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EAP_MESSAGE_PRESENCE (1 << 6)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_QOS_FLOW_DESCRIPTIONS_PRESENCE (1 << 7)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_EPCO_PRESENCE (1 << 8)
#define PDU_SESSION_ESTABLISHMENT_ACCEPT_DNN_PRESENCE (1 << 9)
typedef struct pdu_session_establishment_accept_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -142,10 +113,10 @@ typedef struct pdu_session_establishment_accept_msg_tag {
} pdu_session_establishment_accept_msg;
int decode_pdu_session_establishment_accept(
pdu_session_establishment_accept_msg *pdusessionestablishmentaccept,
uint8_t *buffer, uint32_t len);
pdu_session_establishment_accept_msg* pdusessionestablishmentaccept,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_establishment_accept(
pdu_session_establishment_accept_msg *pdusessionestablishmentaccept,
uint8_t *buffer, uint32_t len);
pdu_session_establishment_accept_msg* pdusessionestablishmentaccept,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -35,50 +35,33 @@
#include "ExtendedProtocolConfigurationOptions.h"
#include "_5GSMCongestionReattemptIndicator.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_ESTABLISHMENT_REJECT_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
GPRS_TIMER3_MINIMUM_LENGTH + \
ALLOWED_SSC_MODE_MINIMUM_LENGTH + \
EAP_MESSAGE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_ESTABLISHMENT_REJECT_MINIMUM_LENGTH ( \
_5GSM_CAUSE_MINIMUM_LENGTH_V + \
0)
#define PDU_SESSION_ESTABLISHMENT_REJECT_MINIMUM_LENGTH \
(_5GSM_CAUSE_MINIMUM_LENGTH_V + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_ESTABLISHMENT_REJECT_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_5GSM_CAUSE_MAXIMUM_LENGTH_V + \
GPRS_TIMER3_MAXIMUM_LENGTH_TLV + \
ALLOWED_SSC_MODE_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_ESTABLISHMENT_REJECT_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _5GSM_CAUSE_MAXIMUM_LENGTH_V + \
GPRS_TIMER3_MAXIMUM_LENGTH_TLV + ALLOWED_SSC_MODE_MAXIMUM_LENGTH + \
EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_ESTABLISHMENT_REJECT_GPRS_TIMER3_IEI 0x37
#define PDU_SESSION_ESTABLISHMENT_REJECT_ALLOWED_SSC_MODE_IEI 0xF0
#define PDU_SESSION_ESTABLISHMENT_REJECT_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_ESTABLISHMENT_REJECT_E_P_C_O_IEI 0x7B
#define PDU_SESSION_ESTABLISHMENT_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI 0x61
#define PDU_SESSION_ESTABLISHMENT_REJECT_GPRS_TIMER3_IEI 0x37
#define PDU_SESSION_ESTABLISHMENT_REJECT_ALLOWED_SSC_MODE_IEI 0xF0
#define PDU_SESSION_ESTABLISHMENT_REJECT_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_ESTABLISHMENT_REJECT_E_P_C_O_IEI 0x7B
#define PDU_SESSION_ESTABLISHMENT_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI \
0x61
#define PDU_SESSION_ESTABLISHMENT_REJECT_GPRS_TIMER3_PRESENCE (1<<0)
#define PDU_SESSION_ESTABLISHMENT_REJECT_ALLOWED_SSC_MODE_PRESENCE (1<<1)
#define PDU_SESSION_ESTABLISHMENT_REJECT_EAP_MESSAGE_PRESENCE (1<<2)
#define PDU_SESSION_ESTABLISHMENT_REJECT_E_P_C_O_PRESENCE (1<<3)
#define PDU_SESSION_ESTABLISHMENT_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE (1<<4)
#define PDU_SESSION_ESTABLISHMENT_REJECT_GPRS_TIMER3_PRESENCE (1 << 0)
#define PDU_SESSION_ESTABLISHMENT_REJECT_ALLOWED_SSC_MODE_PRESENCE (1 << 1)
#define PDU_SESSION_ESTABLISHMENT_REJECT_EAP_MESSAGE_PRESENCE (1 << 2)
#define PDU_SESSION_ESTABLISHMENT_REJECT_E_P_C_O_PRESENCE (1 << 3)
#define PDU_SESSION_ESTABLISHMENT_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE \
(1 << 4)
typedef struct pdu_session_establishment_reject_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -95,10 +78,10 @@ typedef struct pdu_session_establishment_reject_msg_tag {
} pdu_session_establishment_reject_msg;
int decode_pdu_session_establishment_reject(
pdu_session_establishment_reject_msg *pdusessionestablishmentreject,
uint8_t *buffer, uint32_t len);
pdu_session_establishment_reject_msg* pdusessionestablishmentreject,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_establishment_reject(
pdu_session_establishment_reject_msg *pdusessionestablishmentreject,
uint8_t *buffer, uint32_t len);
pdu_session_establishment_reject_msg* pdusessionestablishmentreject,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -37,60 +37,44 @@
#include "SMPDUDNRequestContainer.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MINIMUM_LENGTH + \
_PDU_SESSION_TYPE_MINIMUM_LENGTH + \
SSC_MODE_MINIMUM_LENGTH + \
_5GSM_CAPABILITY_MINIMUM_LENGTH + \
MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_MINIMUM_LENGTH + \
ALWAYSON_PDU_SESSION_REQUESTED_MINIMUM_LENGTH + \
SMPDUDN_REQUEST_CONTAINER_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MINIMUM_LENGTH ( \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MINIMUM_LENGTH_V + \
0)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MINIMUM_LENGTH \
(INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MINIMUM_LENGTH_V + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MAXIMUM_LENGTH_V + \
_PDU_SESSION_TYPE_MAXIMUM_LENGTH + \
SSC_MODE_MAXIMUM_LENGTH + \
_5GSM_CAPABILITY_MAXIMUM_LENGTH_TLV + \
MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_MAXIMUM_LENGTH_TV + \
ALWAYSON_PDU_SESSION_REQUESTED_MAXIMUM_LENGTH + \
SMPDUDN_REQUEST_CONTAINER_MAXIMUM_LENGTH_TLV + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MAXIMUM_LENGTH_V + \
_PDU_SESSION_TYPE_MAXIMUM_LENGTH + SSC_MODE_MAXIMUM_LENGTH + \
_5GSM_CAPABILITY_MAXIMUM_LENGTH_TLV + \
MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_MAXIMUM_LENGTH_TV + \
ALWAYSON_PDU_SESSION_REQUESTED_MAXIMUM_LENGTH + \
SMPDUDN_REQUEST_CONTAINER_MAXIMUM_LENGTH_TLV + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_TYPE_IEI 0x90
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SSC_MODE_IEI 0xA0
#define PDU_SESSION_ESTABLISHMENT_REQUEST__5GSM_CAPABILITY_IEI 0x28
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_IEI 0x55
#define PDU_SESSION_ESTABLISHMENT_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_IEI 0xB0
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SMPDUDN_REQUEST_CONTAINER_INFORMATION_IEI 0x39
#define PDU_SESSION_ESTABLISHMENT_REQUEST_EPCO_IEI 0x7B
#define PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_TYPE_IEI 0x90
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SSC_MODE_IEI 0xA0
#define PDU_SESSION_ESTABLISHMENT_REQUEST__5GSM_CAPABILITY_IEI 0x28
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_IEI 0x55
#define PDU_SESSION_ESTABLISHMENT_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_IEI \
0xB0
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SMPDUDN_REQUEST_CONTAINER_INFORMATION_IEI \
0x39
#define PDU_SESSION_ESTABLISHMENT_REQUEST_EPCO_IEI 0x7B
#define PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_TYPE_PRESENT (1<<0)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SSC_MODE_PRESENT (1<<1)
#define PDU_SESSION_ESTABLISHMENT_REQUEST__5GSM_CAPABILITY_PRESENT (1<<2)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_PRESENT (1<<3)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_PRESENT (1<<4)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SMPDUDN_REQUEST_CONTAINER_INFORMATION_PRESENT (1<<5)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_EPCO_PRESENT (1<<6)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_PDU_SESSION_TYPE_PRESENT (1 << 0)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SSC_MODE_PRESENT (1 << 1)
#define PDU_SESSION_ESTABLISHMENT_REQUEST__5GSM_CAPABILITY_PRESENT (1 << 2)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_PRESENT \
(1 << 3)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_PRESENT \
(1 << 4)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_SMPDUDN_REQUEST_CONTAINER_INFORMATION_PRESENT \
(1 << 5)
#define PDU_SESSION_ESTABLISHMENT_REQUEST_EPCO_PRESENT (1 << 6)
typedef struct pdu_session_establishment_request_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -109,10 +93,10 @@ typedef struct pdu_session_establishment_request_msg_tag {
} pdu_session_establishment_request_msg;
int decode_pdu_session_establishment_request(
pdu_session_establishment_request_msg *pdusessionestablishmentrequest,
uint8_t *buffer, uint32_t len);
pdu_session_establishment_request_msg* pdusessionestablishmentrequest,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_establishment_request(
pdu_session_establishment_request_msg *pdusessionestablishmentrequest,
uint8_t *buffer, uint32_t len);
pdu_session_establishment_request_msg* pdusessionestablishmentrequest,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -37,59 +37,41 @@
#include "QOSFlowDescriptions.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_COMMAND_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
SESSION_AMBR_MINIMUM_LENGTH + \
GPRS_TIMER_MINIMUM_LENGTH + \
ALWAYSON_PDU_SESSION_INDICATION_MINIMUM_LENGTH + \
QOS_RULES_MINIMUM_LENGTH + \
MAPPED_EPS_BEARER_CONTEXTS_MINIMUM_LENGTH + \
QOS_FLOW_DESCRIPTIONS_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_COMMAND_MINIMUM_LENGTH 0
#define PDU_SESSION_MODIFICATION_COMMAND_MINIMUM_LENGTH 0
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_MODIFICATION_COMMAND_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_5GSM_CAUSE_MAXIMUM_LENGTH_TV + \
SESSION_AMBR_MAXIMUM_LENGTH_TLV + \
GPRS_TIMER_MAXIMUM_LENGTH_TV + \
ALWAYSON_PDU_SESSION_INDICATION_MAXIMUM_LENGTH + \
QOS_RULES_MAXIMUM_LENGTH_TLVE + \
MAPPED_EPS_BEARER_CONTEXTS_MAXIMUM_LENGTH + \
QOS_FLOW_DESCRIPTIONS_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_MODIFICATION_COMMAND_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _5GSM_CAUSE_MAXIMUM_LENGTH_TV + \
SESSION_AMBR_MAXIMUM_LENGTH_TLV + GPRS_TIMER_MAXIMUM_LENGTH_TV + \
ALWAYSON_PDU_SESSION_INDICATION_MAXIMUM_LENGTH + \
QOS_RULES_MAXIMUM_LENGTH_TLVE + MAPPED_EPS_BEARER_CONTEXTS_MAXIMUM_LENGTH + \
QOS_FLOW_DESCRIPTIONS_MAXIMUM_LENGTH_TLVE + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_MODIFICATION_COMMAND__5GSM_CAUSE_IEI 0x59
#define PDU_SESSION_MODIFICATION_COMMAND_SESSION_AMBR_IEI 0x2A
#define PDU_SESSION_MODIFICATION_COMMAND_GPRS_TIMER_IEI 0x56
#define PDU_SESSION_MODIFICATION_COMMAND_ALWAYSON_PDU_SESSION_INDICATION_IEI 0x80
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_RULES_IEI 0x7A
#define PDU_SESSION_MODIFICATION_COMMAND_MAPPED_EPS_BEARER_CONTEXTS_IEI 0x75
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_FLOW_DESCRIPTIONS_IEI 0x79
#define PDU_SESSION_MODIFICATION_COMMAND_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_COMMAND__5GSM_CAUSE_IEI 0x59
#define PDU_SESSION_MODIFICATION_COMMAND_SESSION_AMBR_IEI 0x2A
#define PDU_SESSION_MODIFICATION_COMMAND_GPRS_TIMER_IEI 0x56
#define PDU_SESSION_MODIFICATION_COMMAND_ALWAYSON_PDU_SESSION_INDICATION_IEI \
0x80
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_RULES_IEI 0x7A
#define PDU_SESSION_MODIFICATION_COMMAND_MAPPED_EPS_BEARER_CONTEXTS_IEI 0x75
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_FLOW_DESCRIPTIONS_IEI 0x79
#define PDU_SESSION_MODIFICATION_COMMAND_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_COMMAND__5GSM_CAUSE_PRESENCE (1<<0)
#define PDU_SESSION_MODIFICATION_COMMAND_SESSION_AMBR_PRESENCE (1<<1)
#define PDU_SESSION_MODIFICATION_COMMAND_GPRS_TIMER_PRESENCE (1<<2)
#define PDU_SESSION_MODIFICATION_COMMAND_ALWAYSON_PDU_SESSION_INDICATION_PRESENCE (1<<3)
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_RULES_PRESENCE (1<<4)
#define PDU_SESSION_MODIFICATION_COMMAND_MAPPED_EPS_BEARER_CONTEXTS_PRESENCE (1<<5)
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_FLOW_DESCRIPTIONS_PRESENCE (1<<6)
#define PDU_SESSION_MODIFICATION_COMMAND_E_P_C_O_PRESENCE (1<<7)
#define PDU_SESSION_MODIFICATION_COMMAND__5GSM_CAUSE_PRESENCE (1 << 0)
#define PDU_SESSION_MODIFICATION_COMMAND_SESSION_AMBR_PRESENCE (1 << 1)
#define PDU_SESSION_MODIFICATION_COMMAND_GPRS_TIMER_PRESENCE (1 << 2)
#define PDU_SESSION_MODIFICATION_COMMAND_ALWAYSON_PDU_SESSION_INDICATION_PRESENCE \
(1 << 3)
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_RULES_PRESENCE (1 << 4)
#define PDU_SESSION_MODIFICATION_COMMAND_MAPPED_EPS_BEARER_CONTEXTS_PRESENCE \
(1 << 5)
#define PDU_SESSION_MODIFICATION_COMMAND_QOS_FLOW_DESCRIPTIONS_PRESENCE (1 << 6)
#define PDU_SESSION_MODIFICATION_COMMAND_E_P_C_O_PRESENCE (1 << 7)
typedef struct pdu_session_modification_command_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -108,10 +90,10 @@ typedef struct pdu_session_modification_command_msg_tag {
} pdu_session_modification_command_msg;
int decode_pdu_session_modification_command(
pdu_session_modification_command_msg *pdusessionmodificationcommand,
uint8_t *buffer, uint32_t len);
pdu_session_modification_command_msg* pdusessionmodificationcommand,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_modification_command(
pdu_session_modification_command_msg *pdusessionmodificationcommand,
uint8_t *buffer, uint32_t len);
pdu_session_modification_command_msg* pdusessionmodificationcommand,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -28,18 +28,20 @@
#include "PDUSessionModificationCommandReject.h"
int decode_pdu_session_modification_command_reject(
pdu_session_modification_command_reject_msg *pdu_session_modification_command_reject,
uint8_t *buffer, uint32_t len) {
uint32_t decoded = 0;
pdu_session_modification_command_reject_msg*
pdu_session_modification_command_reject,
uint8_t* buffer, uint32_t len) {
uint32_t decoded = 0;
int decoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_DECODER(
buffer, PDU_SESSION_MODIFICATION_COMMAND_REJECT_MINIMUM_LENGTH, len);
if ((decoded_result = decode__5gsm_cause(
&pdu_session_modification_command_reject->_5gsmcause, 0, buffer + decoded,
len - decoded)) < 0) {
&pdu_session_modification_command_reject->_5gsmcause, 0,
buffer + decoded, len - decoded)) < 0) {
return decoded_result;
} else {
decoded += decoded_result;
......@@ -48,16 +50,15 @@ int decode_pdu_session_modification_command_reject(
while (len - decoded > 0) {
uint8_t ieiDecoded = *(buffer + decoded);
if (ieiDecoded == 0)
break;
if (ieiDecoded == 0) break;
switch (ieiDecoded) {
case PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI:
if ((decoded_result = decode_extended_protocol_configuration_options(
&pdu_session_modification_command_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI,
buffer + decoded, len - decoded)) < 0)
&pdu_session_modification_command_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI,
buffer + decoded, len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -72,31 +73,33 @@ int decode_pdu_session_modification_command_reject(
}
int encode_pdu_session_modification_command_reject(
pdu_session_modification_command_reject_msg *pdu_session_modification_command_reject,
uint8_t *buffer, uint32_t len) {
uint32_t encoded = 0;
pdu_session_modification_command_reject_msg*
pdu_session_modification_command_reject,
uint8_t* buffer, uint32_t len) {
uint32_t encoded = 0;
int encoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_ENCODER(
buffer, PDU_SESSION_MODIFICATION_COMMAND_REJECT_MINIMUM_LENGTH, len);
if ((encoded_result = encode__5gsm_cause(
pdu_session_modification_command_reject->_5gsmcause, 0, buffer + encoded,
len - encoded)) < 0) {
pdu_session_modification_command_reject->_5gsmcause, 0,
buffer + encoded, len - encoded)) < 0) {
return encoded_result;
} else {
encoded += encoded_result;
}
if ((pdu_session_modification_command_reject->presence
& PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_PRESENCE)
== PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_PRESENCE) {
if ((pdu_session_modification_command_reject->presence &
PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_PRESENCE) ==
PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_PRESENCE) {
if ((encoded_result = encode_extended_protocol_configuration_options(
pdu_session_modification_command_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI, buffer + encoded,
len - encoded)) < 0)
pdu_session_modification_command_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI,
buffer + encoded, len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -31,34 +31,20 @@
#include "_5GSMCause.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_MINIMUM_LENGTH ( \
_5GSM_CAUSE_MINIMUM_LENGTH_V + \
0)
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_MINIMUM_LENGTH \
(_5GSM_CAUSE_MINIMUM_LENGTH_V + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_5GSM_CAUSE_MAXIMUM_LENGTH_V + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _5GSM_CAUSE_MAXIMUM_LENGTH_V + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_PRESENCE (1<<0)
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_COMMAND_REJECT_E_P_C_O_PRESENCE (1 << 0)
typedef struct pdu_session_modification_command_reject_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -71,10 +57,12 @@ typedef struct pdu_session_modification_command_reject_msg_tag {
} pdu_session_modification_command_reject_msg;
int decode_pdu_session_modification_command_reject(
pdu_session_modification_command_reject_msg *pdusessionmodificationcommandreject,
uint8_t *buffer, uint32_t len);
pdu_session_modification_command_reject_msg*
pdusessionmodificationcommandreject,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_modification_command_reject(
pdu_session_modification_command_reject_msg *pdusessionmodificationcommandreject,
uint8_t *buffer, uint32_t len);
pdu_session_modification_command_reject_msg*
pdusessionmodificationcommandreject,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -28,28 +28,28 @@
#include "PDUSessionModificationComplete.h"
int decode_pdu_session_modification_complete(
pdu_session_modification_complete_msg *pdu_session_modification_complete,
uint8_t *buffer, uint32_t len) {
uint32_t decoded = 0;
pdu_session_modification_complete_msg* pdu_session_modification_complete,
uint8_t* buffer, uint32_t len) {
uint32_t decoded = 0;
int decoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_DECODER(
buffer, PDU_SESSION_MODIFICATION_COMPLETE_MINIMUM_LENGTH, len);
while (len - decoded > 0) {
uint8_t ieiDecoded = *(buffer + decoded);
if (ieiDecoded == 0)
break;
if (ieiDecoded == 0) break;
switch (ieiDecoded) {
case PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI:
if ((decoded_result = decode_extended_protocol_configuration_options(
&pdu_session_modification_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_modification_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI,
buffer + decoded, len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -64,22 +64,24 @@ int decode_pdu_session_modification_complete(
}
int encode_pdu_session_modification_complete(
pdu_session_modification_complete_msg *pdu_session_modification_complete,
uint8_t *buffer, uint32_t len) {
uint32_t encoded = 0;
pdu_session_modification_complete_msg* pdu_session_modification_complete,
uint8_t* buffer, uint32_t len) {
uint32_t encoded = 0;
int encoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_ENCODER(
buffer, PDU_SESSION_MODIFICATION_COMPLETE_MINIMUM_LENGTH, len);
if ((pdu_session_modification_complete->presence
& PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_PRESENCE)
== PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_PRESENCE) {
if ((pdu_session_modification_complete->presence &
PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_PRESENCE) ==
PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_PRESENCE) {
if ((encoded_result = encode_extended_protocol_configuration_options(
pdu_session_modification_complete->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI, buffer + encoded,
len - encoded)) < 0)
pdu_session_modification_complete
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI, buffer + encoded,
len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -30,30 +30,19 @@
#include "MessageType.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_COMPLETE_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_COMPLETE_MINIMUM_LENGTH 0
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_MODIFICATION_COMPLETE_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_MODIFICATION_COMPLETE_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_PRESENCE (1<<0)
#define PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_COMPLETE_E_P_C_O_PRESENCE (1 << 0)
typedef struct pdu_session_modification_complete_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -65,10 +54,10 @@ typedef struct pdu_session_modification_complete_msg_tag {
} pdu_session_modification_complete_msg;
int decode_pdu_session_modification_complete(
pdu_session_modification_complete_msg *pdusessionmodificationcomplete,
uint8_t *buffer, uint32_t len);
pdu_session_modification_complete_msg* pdusessionmodificationcomplete,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_modification_complete(
pdu_session_modification_complete_msg *pdusessionmodificationcomplete,
uint8_t *buffer, uint32_t len);
pdu_session_modification_complete_msg* pdusessionmodificationcomplete,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -28,18 +28,19 @@
#include "PDUSessionModificationReject.h"
int decode_pdu_session_modification_reject(
pdu_session_modification_reject_msg *pdu_session_modification_reject,
uint8_t *buffer, uint32_t len) {
uint32_t decoded = 0;
pdu_session_modification_reject_msg* pdu_session_modification_reject,
uint8_t* buffer, uint32_t len) {
uint32_t decoded = 0;
int decoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_DECODER(
buffer, PDU_SESSION_MODIFICATION_REJECT_MINIMUM_LENGTH, len);
if ((decoded_result = decode__5gsm_cause(
&pdu_session_modification_reject->_5gsmcause, 0, buffer + decoded,
len - decoded)) < 0) {
&pdu_session_modification_reject->_5gsmcause, 0, buffer + decoded,
len - decoded)) < 0) {
return decoded_result;
} else {
decoded += decoded_result;
......@@ -48,15 +49,14 @@ int decode_pdu_session_modification_reject(
while (len - decoded > 0) {
uint8_t ieiDecoded = *(buffer + decoded);
if (ieiDecoded == 0)
break;
if (ieiDecoded == 0) break;
switch (ieiDecoded) {
case PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI:
if ((decoded_result = decode_gprs_timer3(
&pdu_session_modification_reject->gprstimer3,
PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_modification_reject->gprstimer3,
PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI,
buffer + decoded, len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -66,10 +66,10 @@ int decode_pdu_session_modification_reject(
break;
case PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI:
if ((decoded_result = decode_extended_protocol_configuration_options(
&pdu_session_modification_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI, buffer + decoded,
len - decoded)) < 0)
&pdu_session_modification_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI, buffer + decoded,
len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -78,12 +78,11 @@ int decode_pdu_session_modification_reject(
}
break;
case PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI:
if ((decoded_result =
decode__5gsm_congestion_reattempt_indicator(
&pdu_session_modification_reject
->_5gsmcongestionreattemptindicator,
PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI,
buffer + decoded, len - decoded)) < 0)
if ((decoded_result = decode__5gsm_congestion_reattempt_indicator(
&pdu_session_modification_reject
->_5gsmcongestionreattemptindicator,
PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI,
buffer + decoded, len - decoded)) < 0)
return decoded_result;
else {
decoded += decoded_result;
......@@ -98,55 +97,56 @@ int decode_pdu_session_modification_reject(
}
int encode_pdu_session_modification_reject(
pdu_session_modification_reject_msg *pdu_session_modification_reject,
uint8_t *buffer, uint32_t len) {
uint32_t encoded = 0;
pdu_session_modification_reject_msg* pdu_session_modification_reject,
uint8_t* buffer, uint32_t len) {
uint32_t encoded = 0;
int encoded_result = 0;
// Check if we got a NULL pointer and if buffer length is >= minimum length expected for the message.
// Check if we got a NULL pointer and if buffer length is >= minimum length
// expected for the message.
CHECK_PDU_POINTER_AND_LENGTH_ENCODER(
buffer, PDU_SESSION_MODIFICATION_REJECT_MINIMUM_LENGTH, len);
if ((encoded_result = encode__5gsm_cause(
pdu_session_modification_reject->_5gsmcause, 0, buffer + encoded,
len - encoded)) < 0) {
pdu_session_modification_reject->_5gsmcause, 0, buffer + encoded,
len - encoded)) < 0) {
return encoded_result;
} else {
encoded += encoded_result;
}
if ((pdu_session_modification_reject->presence
& PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_PRESENCE)
== PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_PRESENCE) {
if ((pdu_session_modification_reject->presence &
PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_PRESENCE) ==
PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_PRESENCE) {
if ((encoded_result = encode_gprs_timer3(
pdu_session_modification_reject->gprstimer3,
PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI, buffer + encoded,
len - encoded)) < 0)
pdu_session_modification_reject->gprstimer3,
PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI, buffer + encoded,
len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
}
if ((pdu_session_modification_reject->presence
& PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_PRESENCE)
== PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_PRESENCE) {
if ((pdu_session_modification_reject->presence &
PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_PRESENCE) ==
PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_PRESENCE) {
if ((encoded_result = encode_extended_protocol_configuration_options(
pdu_session_modification_reject->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI, buffer + encoded,
len - encoded)) < 0)
pdu_session_modification_reject
->extendedprotocolconfigurationoptions,
PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI, buffer + encoded,
len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
}
if ((pdu_session_modification_reject->presence
& PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE)
== PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE) {
if ((encoded_result =
encode__5gsm_congestion_reattempt_indicator(
pdu_session_modification_reject->_5gsmcongestionreattemptindicator,
PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI,
buffer + encoded, len - encoded)) < 0)
if ((pdu_session_modification_reject->presence &
PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE) ==
PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE) {
if ((encoded_result = encode__5gsm_congestion_reattempt_indicator(
pdu_session_modification_reject->_5gsmcongestionreattemptindicator,
PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI,
buffer + encoded, len - encoded)) < 0)
return encoded_result;
else
encoded += encoded_result;
......
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -33,42 +33,28 @@
#include "ExtendedProtocolConfigurationOptions.h"
#include "_5GSMCongestionReattemptIndicator.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_REJECT_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
GPRS_TIMER3_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_REJECT_MINIMUM_LENGTH ( \
_5GSM_CAUSE_MINIMUM_LENGTH_V + \
0)
#define PDU_SESSION_MODIFICATION_REJECT_MINIMUM_LENGTH \
(_5GSM_CAUSE_MINIMUM_LENGTH_V + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_MODIFICATION_REJECT_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_5GSM_CAUSE_MAXIMUM_LENGTH_V + \
GPRS_TIMER3_MAXIMUM_LENGTH_TLV + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_MODIFICATION_REJECT_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _5GSM_CAUSE_MAXIMUM_LENGTH_V + \
GPRS_TIMER3_MAXIMUM_LENGTH_TLV + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI 0x37
#define PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI 0x61
#define PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_IEI 0x37
#define PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI \
0x61
#define PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_PRESENCE (1<<0)
#define PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_PRESENCE (1<<1)
#define PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE (1<<2)
#define PDU_SESSION_MODIFICATION_REJECT_GPRS_TIMER3_PRESENCE (1 << 0)
#define PDU_SESSION_MODIFICATION_REJECT_E_P_C_O_PRESENCE (1 << 1)
#define PDU_SESSION_MODIFICATION_REJECT__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE \
(1 << 2)
typedef struct pdu_session_modification_reject_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -83,10 +69,10 @@ typedef struct pdu_session_modification_reject_msg_tag {
} pdu_session_modification_reject_msg;
int decode_pdu_session_modification_reject(
pdu_session_modification_reject_msg *pdusessionmodificationreject,
uint8_t *buffer, uint32_t len);
pdu_session_modification_reject_msg* pdusessionmodificationreject,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_modification_reject(
pdu_session_modification_reject_msg *pdusessionmodificationreject,
uint8_t *buffer, uint32_t len);
pdu_session_modification_reject_msg* pdusessionmodificationreject,
uint8_t* buffer, uint32_t len);
#endif
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -38,63 +38,47 @@
#include "MappedEPSBearerContexts.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_REQUEST_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_5GSM_CAPABILITY_MINIMUM_LENGTH + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_MINIMUM_LENGTH + \
ALWAYSON_PDU_SESSION_REQUESTED_MINIMUM_LENGTH + \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MINIMUM_LENGTH + \
QOS_RULES_MINIMUM_LENGTH + \
QOS_FLOW_DESCRIPTIONS_MINIMUM_LENGTH + \
MAPPED_EPS_BEARER_CONTEXTS_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_MODIFICATION_REQUEST_MINIMUM_LENGTH 0
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_5GSM_CAPABILITY_MAXIMUM_LENGTH_TLV + \
_5GSM_CAUSE_MAXIMUM_LENGTH_TV + \
MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_MAXIMUM_LENGTH_TV + \
ALWAYSON_PDU_SESSION_REQUESTED_MAXIMUM_LENGTH + \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MAXIMUM_LENGTH_TV + \
QOS_RULES_MAXIMUM_LENGTH_TLVE + \
QOS_FLOW_DESCRIPTIONS_MAXIMUM_LENGTH_TLVE + \
MAPPED_EPS_BEARER_CONTEXTS_MAXIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _5GSM_CAPABILITY_MAXIMUM_LENGTH_TLV + \
_5GSM_CAUSE_MAXIMUM_LENGTH_TV + \
MAXIMUM_NUMBER_OF_SUPPORTED_PACKET_FILTERS_MAXIMUM_LENGTH_TV + \
ALWAYSON_PDU_SESSION_REQUESTED_MAXIMUM_LENGTH + \
INTERGRITY_PROTECTION_MAXIMUM_DATA_RATE_MAXIMUM_LENGTH_TV + \
QOS_RULES_MAXIMUM_LENGTH_TLVE + QOS_FLOW_DESCRIPTIONS_MAXIMUM_LENGTH_TLVE + \
MAPPED_EPS_BEARER_CONTEXTS_MAXIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAPABILITY_IEI 0x28
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAUSE_IEI 0x59
#define PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_IEI 0x55
#define PDU_SESSION_MODIFICATION_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_IEI 0xB0
#define PDU_SESSION_MODIFICATION_REQUEST_INTGRITY_PROTECTION_MAXIMUM_DATA_RATE_IEI 0x13
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_RULES_IEI 0x7A
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_FLOW_DESCRIPTIONS_IEI 0x79
#define PDU_SESSION_MODIFICATION_REQUEST_MAPPED_EPS_BEARER_CONTEXTS_IEI 0x75
#define PDU_SESSION_MODIFICATION_REQUEST_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAPABILITY_IEI 0x28
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAUSE_IEI 0x59
#define PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_IEI 0x55
#define PDU_SESSION_MODIFICATION_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_IEI 0xB0
#define PDU_SESSION_MODIFICATION_REQUEST_INTGRITY_PROTECTION_MAXIMUM_DATA_RATE_IEI \
0x13
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_RULES_IEI 0x7A
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_FLOW_DESCRIPTIONS_IEI 0x79
#define PDU_SESSION_MODIFICATION_REQUEST_MAPPED_EPS_BEARER_CONTEXTS_IEI 0x75
#define PDU_SESSION_MODIFICATION_REQUEST_E_P_C_O_IEI 0x7B
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAPABILITY_PRESENCE (1<<0)
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAUSE_PRESENCE (1<<1)
#define PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_PRESENCE (1<<2)
#define PDU_SESSION_MODIFICATION_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_PRESENCE (1<<3)
#define PDU_SESSION_MODIFICATION_REQUEST_INTGRITY_PROTECTION_MAXIMUM_DATA_RATE_PRESENCE (1<<4)
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_RULES_PRESENCE (1<<5)
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_FLOW_DESCRIPTIONS_PRESENCE (1<<6)
#define PDU_SESSION_MODIFICATION_REQUEST_MAPPED_EPS_BEARER_CONTEXTS_PRESENCE (1<<7)
#define PDU_SESSION_MODIFICATION_REQUEST_E_P_C_O_PRESENCE (1<<8)
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAPABILITY_PRESENCE (1 << 0)
#define PDU_SESSION_MODIFICATION_REQUEST__5GSM_CAUSE_PRESENCE (1 << 1)
#define PDU_SESSION_MODIFICATION_REQUEST_MAXIMUM_NUMBER_OF_SUPPORTED_PRESENCE \
(1 << 2)
#define PDU_SESSION_MODIFICATION_REQUEST_ALWAYSON_PDU_SESSION_REQUESTED_PRESENCE \
(1 << 3)
#define PDU_SESSION_MODIFICATION_REQUEST_INTGRITY_PROTECTION_MAXIMUM_DATA_RATE_PRESENCE \
(1 << 4)
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_RULES_PRESENCE (1 << 5)
#define PDU_SESSION_MODIFICATION_REQUEST_QOS_FLOW_DESCRIPTIONS_PRESENCE (1 << 6)
#define PDU_SESSION_MODIFICATION_REQUEST_MAPPED_EPS_BEARER_CONTEXTS_PRESENCE \
(1 << 7)
#define PDU_SESSION_MODIFICATION_REQUEST_E_P_C_O_PRESENCE (1 << 8)
typedef struct pdu_session_modification_request_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -114,10 +98,10 @@ typedef struct pdu_session_modification_request_msg_tag {
} pdu_session_modification_request_msg;
int decode_pdu_session_modification_request(
pdu_session_modification_request_msg *pdusessionmodificationrequest,
uint8_t *buffer, uint32_t len);
pdu_session_modification_request_msg* pdusessionmodificationrequest,
uint8_t* buffer, uint32_t len);
int encode_pdu_session_modification_request(
pdu_session_modification_request_msg *pdusessionmodificationrequest,
uint8_t *buffer, uint32_t len);
pdu_session_modification_request_msg* pdusessionmodificationrequest,
uint8_t* buffer, uint32_t len);
#endif
This diff is collapsed.
......@@ -3,9 +3,9 @@
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
* the OAI Public License, Version 1.1 (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.openairinterface.org/?page_id=698
*
......@@ -34,46 +34,31 @@
#include "_5GSMCongestionReattemptIndicator.h"
#include "ExtendedProtocolConfigurationOptions.h"
#if 0
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_RELEASE_COMMAND_MINIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MINIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MINIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MINIMUM_LENGTH + \
MESSAGE_TYPE_MINIMUM_LENGTH + \
_5GSM_CAUSE_MINIMUM_LENGTH + \
GPRS_TIMER3_MINIMUM_LENGTH + \
EAP_MESSAGE_MINIMUM_LENGTH + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MINIMUM_LENGTH + \
0)
#endif
/* Minimum length macro. Formed by minimum length of each mandatory field */
#define PDU_SESSION_RELEASE_COMMAND_MINIMUM_LENGTH ( \
_5GSM_CAUSE_MINIMUM_LENGTH_V + \
0)
#define PDU_SESSION_RELEASE_COMMAND_MINIMUM_LENGTH \
(_5GSM_CAUSE_MINIMUM_LENGTH_V + 0)
/* Maximum length macro. Formed by maximum length of each field */
#define PDU_SESSION_RELEASE_COMMAND_MAXIMUM_LENGTH ( \
EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + \
_5GSM_CAUSE_MAXIMUM_LENGTH_V + \
GPRS_TIMER3_MAXIMUM_LENGTH_TLV + \
EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
_5GSM_CONGESTION_REATTEMPT_INDICATOR_MAXIMUM_LENGTH_TLV + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + \
0)
#define PDU_SESSION_RELEASE_COMMAND_MAXIMUM_LENGTH \
(EXTENDED_PROTOCOL_DISCRIMINATOR_MAXIMUM_LENGTH + \
PDU_SESSION_IDENTITY_MAXIMUM_LENGTH + \
PROCEDURE_TRANSACTION_IDENTITY_MAXIMUM_LENGTH + \
MESSAGE_TYPE_MAXIMUM_LENGTH + _5GSM_CAUSE_MAXIMUM_LENGTH_V + \
GPRS_TIMER3_MAXIMUM_LENGTH_TLV + EAP_MESSAGE_MAXIMUM_LENGTH_TLVE + \
_5GSM_CONGESTION_REATTEMPT_INDICATOR_MAXIMUM_LENGTH_TLV + \
EXTENDED_PROTOCOL_CONFIGURATION_OPTIONS_MAXIMUM_LENGTH_TLVE + 0)
#define PDU_SESSION_RELEASE_COMMAND_GPRS_TIMER3_IEI 0x37
#define PDU_SESSION_RELEASE_COMMAND_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_RELEASE_COMMAND__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI 0x61
#define PDU_SESSION_RELEASE_COMMAND_E_P_C_O_IEI 0x7B
#define PDU_SESSION_RELEASE_COMMAND_GPRS_TIMER3_IEI 0x37
#define PDU_SESSION_RELEASE_COMMAND_EAP_MESSAGE_IEI 0x78
#define PDU_SESSION_RELEASE_COMMAND__5GSM_CONGESTION_REATTEMPT_INDICATOR_IEI \
0x61
#define PDU_SESSION_RELEASE_COMMAND_E_P_C_O_IEI 0x7B
#define PDU_SESSION_RELEASE_COMMAND_GPRS_TIMER3_PRESENCE (1<<0)
#define PDU_SESSION_RELEASE_COMMAND_EAP_MESSAGE_PRESENCE (1<<1)
#define PDU_SESSION_RELEASE_COMMAND__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE (1<<2)
#define PDU_SESSION_RELEASE_COMMAND_E_P_C_O_PRESENCE (1<<3)
#define PDU_SESSION_RELEASE_COMMAND_GPRS_TIMER3_PRESENCE (1 << 0)
#define PDU_SESSION_RELEASE_COMMAND_EAP_MESSAGE_PRESENCE (1 << 1)
#define PDU_SESSION_RELEASE_COMMAND__5GSM_CONGESTION_REATTEMPT_INDICATOR_PRESENCE \
(1 << 2)
#define PDU_SESSION_RELEASE_COMMAND_E_P_C_O_PRESENCE (1 << 3)
typedef struct pdu_session_release_command_msg_tag {
ExtendedProtocolDiscriminator extendedprotocoldiscriminator;
......@@ -89,10 +74,10 @@ typedef struct pdu_session_release_command_msg_tag {
} pdu_session_release_command_msg;
int decode_pdu_session_release_command(
pdu_session_release_command_msg *pdusessionreleasecommand, uint8_t *buffer,
pdu_session_release_command_msg* pdusessionreleasecommand, uint8_t* buffer,
uint32_t len);
int encode_pdu_session_release_command(
pdu_session_release_command_msg *pdusessionreleasecommand, uint8_t *buffer,
pdu_session_release_command_msg* pdusessionreleasecommand, uint8_t* buffer,
uint32_t len);
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment