Commit 1a38a436 authored by cucengineer's avatar cucengineer

NAS ok except identity

parent aaf4bb81
...@@ -597,7 +597,7 @@ void *rrc_enb_process_msg(void *notUsed) { ...@@ -597,7 +597,7 @@ void *rrc_enb_process_msg(void *notUsed) {
} }
extern void tesths(void); // extern void tesths(void);//CUC:test
int main( int argc, char **argv ) { int main( int argc, char **argv ) {
...@@ -662,9 +662,9 @@ int main( int argc, char **argv ) { ...@@ -662,9 +662,9 @@ int main( int argc, char **argv ) {
#endif #endif
#endif #endif
*/ */
printf("1111111"); // printf("witcomm111witcomm: \n");//CUC:test
tesths (); // tesths ();
printf("1111111"); // printf("witcomm111witcomm \n");
NB_UE_INST=1; NB_UE_INST=1;
NB_INST=1; NB_INST=1;
......
...@@ -2445,7 +2445,7 @@ void *rrc_nrue_task( void *args_p ) { ...@@ -2445,7 +2445,7 @@ void *rrc_nrue_task( void *args_p ) {
uint8_t *buffer; uint8_t *buffer;
LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_UPLINK_DATA_REQ (msg_p).UEid); LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_UPLINK_DATA_REQ (msg_p).UEid);
/* Create message for PDCP (ULInformationTransfer_t) */ /* Create message for PDCP (ULInformationTransfer_t) */
length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data); length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);//QUES:
break; break;
} }
......
...@@ -154,9 +154,8 @@ void *nas_ue_task(void *args_p) ...@@ -154,9 +154,8 @@ void *nas_ue_task(void *args_p)
void nr_nas_proc_dl_transfer_ind (UENAS_msg *msg, Byte_t *data, uint32_t len) { //QUES: 解出的msg干什么 void nr_nas_proc_dl_transfer_ind (UENAS_msg *msg, Byte_t *data, uint32_t len) { //QUES: 解出的msg干什么
uint8_t buffer[100]; uint8_t buffer[100];
UENAS_msg *msg1; UENAS_msg msg1;
uint32_t len1=0; uint32_t len1=0;
nr_user_nas_t UErrc= {0};//QUES:user
int size; int size;
decodeNasMsg(msg,data,len); decodeNasMsg(msg,data,len);
switch (msg->header.message_type) { switch (msg->header.message_type) {
...@@ -172,36 +171,45 @@ void nr_nas_proc_dl_transfer_ind (UENAS_msg *msg, Byte_t *data, uint32_t len) { ...@@ -172,36 +171,45 @@ void nr_nas_proc_dl_transfer_ind (UENAS_msg *msg, Byte_t *data, uint32_t len) {
// break; // break;
// } // }
case AUTHENTICATION_REQUEST: { //send authenticationResponse case Authenticationrequest: { //send authenticationResponse
len1 += authenticationResponse((void **)&msg1->identity_response, &UErrc); len1 += authenticationResponse5g(&msg1.authentication_response);
size = encodeNasMsg(msg1, buffer, len1); size = encodeNasMsg(&msg1, buffer, len1);
nas_itti_ul_data_req(0,buffer,size,0); nas_itti_ul_data_req(0,buffer,size,0);
break; break;
} }
case SECURITY_MODE_COMMAND: { case Securitymodecommand: {
len1 += securityModeComplete5g((void **)&msg1->securitymode_complete); len1 += securityModeComplete5g(&msg1.securitymode_complete);
size = encodeNasMsg(msg1, buffer, len1); size = encodeNasMsg(&msg1, buffer, len1);
nas_itti_ul_data_req(0,buffer,size,0); nas_itti_ul_data_req(0,buffer,size,0);
break; break;
} }
case REGISTRATION_ACCEPT: { case Registrationaccept: {
len1 += registrationComplete5g((void **)&msg1->registration_complete); len1 += registrationComplete5g(&msg1.registration_complete);
size = encodeNasMsg(msg1, buffer, len1); size = encodeNasMsg(&msg1, buffer, len1);
nas_itti_ul_data_req(0,buffer,size,0); nas_itti_ul_data_req(0,buffer,size,0);
break; break;
} }
} }
printf("aaaaaaaaaaaaa: ");
printf("%d\n",size); //****************************** //CUC:test
printf("decodeaaadecode:");
for (int i = 0; i < len; i++)
{
printf("%02x ",*(data+i));
}
printf("decodeaaadecode \n ");
printf("encodeaaaencode:");
for (int i = 0; i < size; i++) for (int i = 0; i < size; i++)
{ {
printf("%02x ",*(buffer+i)); printf("%02x ",*(buffer+i));
} }
printf("aaaaaaaaaaaaa \n "); printf("encodeaaaencode \n ");
//******************************
} }
...@@ -223,15 +231,29 @@ int string2ByteArray(char* input,uint8_t* output) ...@@ -223,15 +231,29 @@ int string2ByteArray(char* input,uint8_t* output)
return i; return i;
} }
void tesths(void) void tesths(void) //CUC:test
{ {
printf("Authentication: \n ");
UENAS_msg msg; UENAS_msg msg1;
char name[] = "7e005601020000217d003b4a2e3bb80403de19020f57b16a2010583f0d352eb89001539b2cb2cbf1da5c"; char Authenticationrequest[] = "7e005601020000217d003b4a2e3bb80403de19020f57b16a2010583f0d352eb89001539b2cb2cbf1da5c";
uint32_t len=42; uint32_t len1=84;
Byte_t *data= (uint8_t *)malloc(sizeof(uint8_t)*len); Byte_t *data1= (uint8_t *)malloc(sizeof(uint8_t)*len1);
string2ByteArray(name, data); string2ByteArray(Authenticationrequest, data1);
nr_nas_proc_dl_transfer_ind(&msg,data,len); nr_nas_proc_dl_transfer_ind(&msg1,data1,len1);
printf("Security mode: \n ");
UENAS_msg msg2;
char Securitymodecommand[] = "7e005d0201028020e1360102";
uint32_t len2=24;
Byte_t *data2= (uint8_t *)malloc(sizeof(uint8_t)*len2);
string2ByteArray(Securitymodecommand, data2);
nr_nas_proc_dl_transfer_ind(&msg2,data2,len2);
printf("Registration: \n ");
UENAS_msg msg3;
char Registrationrequest[] = "7e0042010177000bf202f8398000410000000154070002f83900000115020101210200005e01be";
uint32_t len3=94;
Byte_t *data3= (uint8_t *)malloc(sizeof(uint8_t)*len3);
string2ByteArray(Registrationrequest, data3);
nr_nas_proc_dl_transfer_ind(&msg3,data3,len3);
} }
...@@ -254,6 +276,21 @@ int decodeNasMsg(UENAS_msg *msg, uint8_t *buffer, uint32_t len) { ...@@ -254,6 +276,21 @@ int decodeNasMsg(UENAS_msg *msg, uint8_t *buffer, uint32_t len) {
switch(msg->header.message_type) { switch(msg->header.message_type) {
case Authenticationrequest:
break;
case Securitymodecommand:
break;
case Registrationaccept:
break;
default:
LOG_TRACE(ERROR, "NR_UE - Unexpected message type: 0x%x",
msg->header.message_type);
decode_result = TLV_ENCODE_WRONG_MESSAGE_TYPE;
break;
} }
LOG_FUNC_RETURN (header_result + decode_result); LOG_FUNC_RETURN (header_result + decode_result);
...@@ -280,17 +317,17 @@ int encodeNasMsg(UENAS_msg *msg, uint8_t *buffer, uint32_t len) { //QUES:UENAS_m ...@@ -280,17 +317,17 @@ int encodeNasMsg(UENAS_msg *msg, uint8_t *buffer, uint32_t len) { //QUES:UENAS_m
// encode_result = encode_identity_response(&msg->identity_response, buffer, len); // encode_result = encode_identity_response(&msg->identity_response, buffer, len);
// break; // break;
// } // }
case AUTHENTICATION_RESPONSE: { case Authenticationresponse: {
encode_result = encode_authentication_response5g(&msg->authentication_response, buffer, len); encode_result = encode_authentication_response5g(&msg->authentication_response, buffer, len);
break; break;
} }
case SECURITY_MODE_COMPLETE: { case Securitymodecomplete: {
encode_result = encode_security_mode_complete5g(&msg->securitymode_complete, buffer, len);//TODO:encode_security_mode_complete5g encode_result = encode_security_mode_complete5g(&msg->securitymode_complete, buffer, len);//TODO:encode_security_mode_complete5g
break; break;
} }
case REGISTRATION_COMPLETE: { case Registrationcomplete: {
encode_result = encode_registration_complete5g(&msg->registration_complete, buffer, len);//TODO:encode_security_mode_complete5g encode_result = encode_registration_complete5g(&msg->registration_complete, buffer, len);//TODO:encode_security_mode_complete5g
break; break;
} }
...@@ -302,7 +339,9 @@ static int _nas_mm_msg_decode_header(mm_msg_header_t *header, const uint8_t *buf ...@@ -302,7 +339,9 @@ static int _nas_mm_msg_decode_header(mm_msg_header_t *header, const uint8_t *buf
int size = 0; int size = 0;
/* Check the buffer length */ /* Check the buffer length */
if (len < sizeof(mm_msg_header_t)) {
return (TLV_ENCODE_BUFFER_TOO_SHORT);
}
/* Encode the extendedprotocol discriminator */ /* Encode the extendedprotocol discriminator */
DECODE_U8(buffer + size, header->ex_protocol_discriminator, size); DECODE_U8(buffer + size, header->ex_protocol_discriminator, size);
...@@ -312,7 +351,11 @@ static int _nas_mm_msg_decode_header(mm_msg_header_t *header, const uint8_t *buf ...@@ -312,7 +351,11 @@ static int _nas_mm_msg_decode_header(mm_msg_header_t *header, const uint8_t *buf
DECODE_U8(buffer + size, header->message_type, size); DECODE_U8(buffer + size, header->message_type, size);
/* Check the protocol discriminator */ /* Check the protocol discriminator */
if (header->ex_protocol_discriminator != FGS_MOBILITY_MANAGEMENT_MESSAGE) {
LOG_TRACE(ERROR, "ESM-MSG - Unexpected extened protocol discriminator: 0x%x",
header->ex_protocol_discriminator);
return (TLV_ENCODE_PROTOCOL_NOT_SUPPORTED);
}
return (size); return (size);
} }
...@@ -376,20 +419,28 @@ int encode_registration_complete5g(registrationcomplete_t *registrationcomplete, ...@@ -376,20 +419,28 @@ int encode_registration_complete5g(registrationcomplete_t *registrationcomplete,
return encoded; return encoded;
} }
int securityModeComplete5g(void **msg) {
myCalloc(resp, securityModeComplete_t); int authenticationResponse5g(authenticationresponse_t *msg) {
resp->epd=SGSmobilitymanagementmessages; msg->epd=SGSmobilitymanagementmessages;
resp->sh=0; msg->sh=0;
resp->mt=Registrationcomplete; msg->mt=Authenticationresponse;
*msg=resp; msg->iei=IEI_AuthenticationResponse;
msg->RESlen=sizeof(msg->RES);
uint8_t AUTN[16]={0};
memcpy(&msg->RES,AUTN,msg->RESlen);
return sizeof(authenticationresponse_t);
}
int securityModeComplete5g(securityModeComplete_t *msg) {
msg->epd=SGSmobilitymanagementmessages;
msg->sh=0;
msg->mt=Securitymodecomplete;
return sizeof(securityModeComplete_t); return sizeof(securityModeComplete_t);
} }
int registrationComplete5g(void **msg) { int registrationComplete5g(registrationcomplete_t *msg) {
myCalloc(resp, registrationcomplete_t); msg->epd=SGSmobilitymanagementmessages;
resp->epd=SGSmobilitymanagementmessages; msg->sh=0;
resp->sh=0; msg->mt=Registrationcomplete;
resp->mt=Securitymodecomplete;
*msg=resp;
return sizeof(registrationcomplete_t); return sizeof(registrationcomplete_t);
} }
...@@ -80,10 +80,11 @@ int encodeNasMsg(UENAS_msg *msg, uint8_t *buffer, uint32_t len); ...@@ -80,10 +80,11 @@ int encodeNasMsg(UENAS_msg *msg, uint8_t *buffer, uint32_t len);
int encode_authentication_response5g(authenticationresponse_t *authentication_response, uint8_t *buffer, uint32_t len); int encode_authentication_response5g(authenticationresponse_t *authentication_response, uint8_t *buffer, uint32_t len);
int encode_security_mode_complete5g(securityModeComplete_t *securitymodecomplete, uint8_t *buffer, uint32_t len); int encode_security_mode_complete5g(securityModeComplete_t *securitymodecomplete, uint8_t *buffer, uint32_t len);
int encode_registration_complete5g(registrationcomplete_t *registrationcomplete, uint8_t *buffer, uint32_t len); int encode_registration_complete5g(registrationcomplete_t *registrationcomplete, uint8_t *buffer, uint32_t len);
int securityModeComplete5g(void **msg); int authenticationResponse5g(authenticationresponse_t *msg);
int registrationComplete5g(void **msg); int securityModeComplete5g(securityModeComplete_t *msg);
int registrationComplete5g(registrationcomplete_t *msg);
int string2ByteArray(char* input,uint8_t* output); int string2ByteArray(char* input,uint8_t* output); //CUC:test
void tesths(void); void tesths(void);
#endif /* NAS_TASK_H_ */ #endif /* NAS_TASK_H_ */
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