Add implementation of RRC Connection Reject in Ue Recv.
authorLluis Parcerisa <parcerisa@gmail.com>
Thu, 13 Dec 2012 16:52:15 +0100
changeset 9528 19959697c48e
parent 9527 10c1b7340221
child 9529 830b74366f06
Add implementation of RRC Connection Reject in Ue Recv.
src/lte/model/lte-enb-rrc.cc
src/lte/model/lte-enb-rrc.h
src/lte/model/lte-rrc-protocol-real.cc
src/lte/model/lte-ue-rrc.cc
--- 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();
 }