Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
canghaiwuhen
OpenXG-RAN
Commits
96365966
Commit
96365966
authored
Jan 19, 2016
by
Rohit Gupta
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'bugfix-33-RRCConnectionRequest_with_STMSI' into develop
parents
125cb4d4
93c176f5
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
221 additions
and
75 deletions
+221
-75
openair2/COMMON/platform_types.h
openair2/COMMON/platform_types.h
+6
-0
openair2/RRC/LITE/MESSAGES/asn1_msg.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
+61
-0
openair2/RRC/LITE/MESSAGES/asn1_msg.h
openair2/RRC/LITE/MESSAGES/asn1_msg.h
+10
-0
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+3
-3
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+118
-59
openair2/RRC/LITE/rrc_eNB_S1AP.c
openair2/RRC/LITE/rrc_eNB_S1AP.c
+17
-7
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf
...NERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf
+6
-6
No files found.
openair2/COMMON/platform_types.h
View file @
96365966
...
...
@@ -163,7 +163,13 @@ typedef uint32_t mbms_session_id_t;
typedef
uint16_t
mbms_service_id_t
;
typedef
uint16_t
rnti_t
;
typedef
uint8_t
rrc_enb_index_t
;
typedef
uint8_t
mme_code_t
;
typedef
uint32_t
m_tmsi_t
;
//Random UE identity length = 40 bits
#if ! defined(NOT_A_RANDOM_UE_IDENTITY)
#define NOT_A_RANDOM_UE_IDENTITY (uint64_t)0xFFFFFFFF
#endif
#if ! defined(NOT_A_RNTI)
#define NOT_A_RNTI (rnti_t)0
#endif
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.c
View file @
96365966
...
...
@@ -2110,6 +2110,67 @@ do_RRCConnectionReestablishmentReject(
return
((
enc_rval
.
encoded
+
7
)
/
8
);
}
//------------------------------------------------------------------------------
uint8_t
do_RRCConnectionReject
(
uint8_t
Mod_id
,
uint8_t
*
const
buffer
)
//------------------------------------------------------------------------------
{
asn_enc_rval_t
enc_rval
;
DL_CCCH_Message_t
dl_ccch_msg
;
RRCConnectionReject_t
*
rrcConnectionReject
;
memset
((
void
*
)
&
dl_ccch_msg
,
0
,
sizeof
(
DL_CCCH_Message_t
));
dl_ccch_msg
.
message
.
present
=
DL_CCCH_MessageType_PR_c1
;
dl_ccch_msg
.
message
.
choice
.
c1
.
present
=
DL_CCCH_MessageType__c1_PR_rrcConnectionReject
;
rrcConnectionReject
=
&
dl_ccch_msg
.
message
.
choice
.
c1
.
choice
.
rrcConnectionReject
;
// RRCConnectionReject
rrcConnectionReject
->
criticalExtensions
.
present
=
RRCConnectionReject__criticalExtensions_PR_c1
;
rrcConnectionReject
->
criticalExtensions
.
choice
.
c1
.
present
=
RRCConnectionReject__criticalExtensions__c1_PR_rrcConnectionReject_r8
;
/* let's put a wait time of 1s for the moment */
rrcConnectionReject
->
criticalExtensions
.
choice
.
c1
.
choice
.
rrcConnectionReject_r8
.
waitTime
=
1
;
#ifdef XER_PRINT
xer_fprint
(
stdout
,
&
asn_DEF_DL_CCCH_Message
,
(
void
*
)
&
dl_ccch_msg
);
#endif
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_DL_CCCH_Message
,
(
void
*
)
&
dl_ccch_msg
,
buffer
,
100
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %ld)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
#if defined(ENABLE_ITTI)
# if !defined(DISABLE_XER_SPRINT)
{
char
message_string
[
20000
];
size_t
message_string_size
;
if
((
message_string_size
=
xer_sprint
(
message_string
,
sizeof
(
message_string
),
&
asn_DEF_DL_CCCH_Message
,
(
void
*
)
&
dl_ccch_msg
))
>
0
)
{
MessageDef
*
msg_p
;
msg_p
=
itti_alloc_new_message_sized
(
TASK_RRC_ENB
,
RRC_DL_CCCH
,
message_string_size
+
sizeof
(
IttiMsgText
));
msg_p
->
ittiMsg
.
rrc_dl_ccch
.
size
=
message_string_size
;
memcpy
(
&
msg_p
->
ittiMsg
.
rrc_dl_ccch
.
text
,
message_string
,
message_string_size
);
itti_send_msg_to_task
(
TASK_UNKNOWN
,
Mod_id
,
msg_p
);
}
}
# endif
#endif
#ifdef USER_MODE
LOG_D
(
RRC
,
"RRCConnectionReject Encoded %d bits (%d bytes)
\n
"
,
enc_rval
.
encoded
,(
enc_rval
.
encoded
+
7
)
/
8
);
#endif
return
((
enc_rval
.
encoded
+
7
)
/
8
);
}
uint8_t
do_RRCConnectionRelease
(
uint8_t
Mod_id
,
uint8_t
*
buffer
,
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg.h
View file @
96365966
...
...
@@ -218,6 +218,16 @@ do_RRCConnectionReestablishmentReject(
uint8_t
Mod_id
,
uint8_t
*
const
buffer
);
/**
\brief Generate an RRCConnectionReject DL-CCCH-Message (eNB).
@param Mod_id Module ID of eNB
@param buffer Pointer to PER-encoded ASN.1 description of DL-CCCH-Message PDU
@returns Size of encoded bit stream in bytes*/
uint8_t
do_RRCConnectionReject
(
uint8_t
Mod_id
,
uint8_t
*
const
buffer
);
/**
\brief Generate an RRCConnectionRequest UL-CCCH-Message (UE) based on random string or S-TMSI. This
routine only generates an mo-data establishment cause.
...
...
openair2/RRC/LITE/defs.h
View file @
96365966
...
...
@@ -212,9 +212,9 @@ typedef struct UE_RRC_INFO_s {
}
__attribute__
((
__packed__
))
UE_RRC_INFO
;
typedef
struct
UE_S_TMSI_s
{
uint8
_t
presence
;
uint8_t
mme_code
;
uint32_t
m_tmsi
;
boolean
_t
presence
;
mme_code_t
mme_code
;
m_tmsi_t
m_tmsi
;
}
__attribute__
((
__packed__
))
UE_S_TMSI
;
#if defined(ENABLE_ITTI)
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
96365966
This diff is collapsed.
Click to expand it.
openair2/RRC/LITE/rrc_eNB_S1AP.c
View file @
96365966
...
...
@@ -43,6 +43,7 @@
# include "RRC/LITE/defs.h"
# include "rrc_eNB_UE_context.h"
# include "rrc_eNB_S1AP.h"
# include "enb_config.h"
# if defined(ENABLE_ITTI)
# include "asn1_conversions.h"
...
...
@@ -661,15 +662,16 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
s_tmsi
.
mme_code
=
s_TMSI
->
mme_code
;
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
s_tmsi
.
m_tmsi
=
s_TMSI
->
m_tmsi
;
LOG_I
(
S1AP
,
"[eNB %d] Build S1AP_NAS_FIRST_REQ with s_TMSI: MME code %u M-TMSI %u ue %x
\n
"
,
ctxt_pP
->
module_id
,
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
s_tmsi
.
mme_code
,
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
s_tmsi
.
m_tmsi
,
ue_context_pP
->
ue_context
.
rnti
);
ctxt_pP
->
module_id
,
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
s_tmsi
.
mme_code
,
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
s_tmsi
.
m_tmsi
,
ue_context_pP
->
ue_context
.
rnti
);
}
if
(
rrcConnectionSetupComplete
->
registeredMME
!=
NULL
)
{
/* Fill GUMMEI */
struct
RegisteredMME
*
r_mme
=
rrcConnectionSetupComplete
->
registeredMME
;
int
selected_plmn_identity
=
rrcConnectionSetupComplete
->
selectedPLMN_Identity
;
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
presenceMask
|=
UE_IDENTITIES_gummei
;
...
...
@@ -678,9 +680,9 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
/* Use first indicated PLMN MCC if it is defined */
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mcc
=
*
r_mme
->
plmn_Identity
->
mcc
->
list
.
array
[
0
];
LOG_I
(
S1AP
,
"[eNB %d] Build S1AP_NAS_FIRST_REQ adding in s_TMSI: GUMMEI MCC %u ue %x
\n
"
,
ctxt_pP
->
module_id
,
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mcc
,
ue_context_pP
->
ue_context
.
rnti
);
ctxt_pP
->
module_id
,
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mcc
,
ue_context_pP
->
ue_context
.
rnti
);
}
if
(
r_mme
->
plmn_Identity
->
mnc
.
list
.
count
>
0
)
{
...
...
@@ -691,6 +693,14 @@ rrc_eNB_send_S1AP_NAS_FIRST_REQ(
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mnc
,
ue_context_pP
->
ue_context
.
rnti
);
}
}
else
{
const
Enb_properties_array_t
*
enb_properties_p
=
NULL
;
enb_properties_p
=
enb_config_get
();
// actually the eNB configuration contains only one PLMN (can be up to 6)
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mcc
=
enb_properties_p
->
properties
[
ctxt_pP
->
module_id
]
->
mcc
;
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mnc
=
enb_properties_p
->
properties
[
ctxt_pP
->
module_id
]
->
mnc
;
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mnc_len
=
enb_properties_p
->
properties
[
ctxt_pP
->
module_id
]
->
mnc_digit_length
;
}
S1AP_NAS_FIRST_REQ
(
message_p
).
ue_identity
.
gummei
.
mme_code
=
BIT_STRING_to_uint8
(
&
r_mme
->
mmec
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf
View file @
96365966
...
...
@@ -16,7 +16,7 @@ eNBs =
tracking_area_code
=
"1"
;
mobile_country_code
=
"208"
;
mobile_network_code
=
"9
2
"
;
mobile_network_code
=
"9
5
"
;
//////////
Physical
parameters
:
...
...
@@ -130,18 +130,18 @@ eNBs =
};
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.12.
26
"
;
mme_ip_address
= ( {
ipv4
=
"192.168.12.
17
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;});
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth
1
"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.
82
/24"
;
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth
0
"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.12.
213
/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth
1
"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.
82
/24"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth
0
"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.12.
213
/24"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment