Add implementation of RRC Connection Reject in Ue Recv.
--- a/src/lte/model/lte-enb-rrc.cc Thu Dec 13 15:07:02 2012 +0100
+++ b/src/lte/model/lte-enb-rrc.cc Thu Dec 13 16:52:15 2012 +0100
@@ -1097,6 +1097,11 @@
BooleanValue (true),
MakeBooleanAccessor (&LteEnbRrc::m_admitHandoverRequest),
MakeBooleanChecker ())
+ .AddAttribute ("AdmitRrcConnectionRequest",
+ "Whether to admit a connection request from a Ue",
+ BooleanValue (true),
+ MakeBooleanAccessor (&LteEnbRrc::m_admitRrcConnectionRequest),
+ MakeBooleanChecker ())
.AddTraceSource ("ConnectionEstablished",
"trace fired upon successful RRC connection establishment",
MakeTraceSourceAccessor (&LteEnbRrc::m_connectionEstablishedTrace))
@@ -1273,7 +1278,18 @@
LteEnbRrc::DoRecvRrcConnectionRequest (uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
{
NS_LOG_FUNCTION (this << rnti);
- GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
+
+ if (m_admitRrcConnectionRequest == true)
+ {
+ GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
+ }
+ else
+ {
+ NS_LOG_INFO ("rejecting connection request to rnti " << rnti);
+ LteRrcSap::RrcConnectionReject rejectMsg;
+ rejectMsg.waitTime = 3;
+ m_rrcSapUser->SendRrcConnectionReject (rnti, rejectMsg);
+ }
}
void
--- a/src/lte/model/lte-enb-rrc.h Thu Dec 13 15:07:02 2012 +0100
+++ b/src/lte/model/lte-enb-rrc.h Thu Dec 13 16:52:15 2012 +0100
@@ -574,6 +574,7 @@
RLC_UM_ALWAYS = 2,
RLC_AM_ALWAYS = 3,
PER_BASED = 4};
+
private:
@@ -725,6 +726,7 @@
bool m_reconfigureUes;
bool m_admitHandoverRequest;
+ bool m_admitRrcConnectionRequest;
// imsi cellid rnti
TracedCallback<uint64_t, uint16_t, uint16_t> m_connectionEstablishedTrace;
--- a/src/lte/model/lte-rrc-protocol-real.cc Thu Dec 13 15:07:02 2012 +0100
+++ b/src/lte/model/lte-rrc-protocol-real.cc Thu Dec 13 16:52:15 2012 +0100
@@ -288,11 +288,13 @@
RrcConnectionReestablishmentHeader rrcConnectionReestablishmentHeader;
RrcConnectionReestablishmentRejectHeader rrcConnectionReestablishmentRejectHeader;
RrcConnectionSetupHeader rrcConnectionSetupHeader;
+ RrcConnectionRejectHeader rrcConnectionRejectHeader;
// Declare possible messages
LteRrcSap::RrcConnectionReestablishment rrcConnectionReestablishmentMsg;
LteRrcSap::RrcConnectionReestablishmentReject rrcConnectionReestablishmentRejectMsg;
LteRrcSap::RrcConnectionSetup rrcConnectionSetupMsg;
+ LteRrcSap::RrcConnectionReject rrcConnectionRejectMsg;
// Deserialize packet and call member recv function with appropiate structure
switch ( rrcDlCcchMessage.GetMessageType () )
@@ -311,7 +313,9 @@
break;
case 2:
// RrcConnectionReject
- // ...
+ p->RemoveHeader (rrcConnectionReestablishmentRejectHeader);
+ rrcConnectionReestablishmentRejectMsg = rrcConnectionReestablishmentRejectHeader.GetMessage ();
+ m_ueRrcSapProvider->RecvRrcConnectionReject (rrcConnectionRejectMsg);
break;
case 3:
// RrcConnectionSetup
--- a/src/lte/model/lte-ue-rrc.cc Thu Dec 13 15:07:02 2012 +0100
+++ b/src/lte/model/lte-ue-rrc.cc Thu Dec 13 16:52:15 2012 +0100
@@ -693,6 +693,7 @@
LteUeRrc::DoRecvRrcConnectionReject (LteRrcSap::RrcConnectionReject msg)
{
NS_LOG_FUNCTION (this);
+ LeaveConnectedMode();
}