From 699ae9ffc56db3cd81af8c293edb424a0a5cfc0d Mon Sep 17 00:00:00 2001 From: "JSTAR-2022-088\\dbharri5" Date: Fri, 16 Jun 2023 07:29:16 -0400 Subject: [PATCH 01/10] Alterations to io_lib --- fsw/public_inc/trans_udp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fsw/public_inc/trans_udp.h b/fsw/public_inc/trans_udp.h index 730bccd..d2327d3 100644 --- a/fsw/public_inc/trans_udp.h +++ b/fsw/public_inc/trans_udp.h @@ -37,7 +37,7 @@ /* INADDR_NONE: 0xffffffff */ #define IO_TRANS_UDP_INADDR_NONE "255.255.255.255" /* INADDR_ANY: 0x0 */ -#define IO_TRANS_UDP_INADDR_ANY "0.0.0.0" +#define IO_TRANS_UDP_INADDR_ANY "nos_engine_server" //This was previously 0.0.0.0 /* INADDR_LOOPBACK */ #define IO_TRANS_UDP_INADDR_LOOPBACK "127.0.0.1" #define IO_TRANS_UDP_INPORT_ANY INPORT_ANY From d928fd5c0307faacef74ec43c3399f1900f64d90 Mon Sep 17 00:00:00 2001 From: "Lucas, John P" Date: Fri, 23 Jun 2023 14:39:29 -0400 Subject: [PATCH 02/10] [nasa/nos3#163] Add hostname resolution to trans_udp; --- fsw/public_inc/trans_udp.h | 2 +- fsw/src/services/trans_udp.c | 58 ++++++++++++++++++++++++++++++++---- 2 files changed, 54 insertions(+), 6 deletions(-) diff --git a/fsw/public_inc/trans_udp.h b/fsw/public_inc/trans_udp.h index d2327d3..534f08e 100644 --- a/fsw/public_inc/trans_udp.h +++ b/fsw/public_inc/trans_udp.h @@ -37,7 +37,7 @@ /* INADDR_NONE: 0xffffffff */ #define IO_TRANS_UDP_INADDR_NONE "255.255.255.255" /* INADDR_ANY: 0x0 */ -#define IO_TRANS_UDP_INADDR_ANY "nos_engine_server" //This was previously 0.0.0.0 +#define IO_TRANS_UDP_INADDR_ANY "0.0.0.0" /* INADDR_LOOPBACK */ #define IO_TRANS_UDP_INADDR_LOOPBACK "127.0.0.1" #define IO_TRANS_UDP_INPORT_ANY INPORT_ANY diff --git a/fsw/src/services/trans_udp.c b/fsw/src/services/trans_udp.c index cc0b2e7..32bc8ff 100644 --- a/fsw/src/services/trans_udp.c +++ b/fsw/src/services/trans_udp.c @@ -29,6 +29,13 @@ #include "trans_udp.h" +/* Start additional includes for hostname snippet */ +#include +#include //hostent +#include +/* End additional includes for hostname snippet */ + + /** Initialize (create, configure and bind) a UDP Socket */ int32 IO_TransUdpInit(IO_TransUdpConfig_t * config, IO_TransUdp_t * udp) { @@ -110,6 +117,11 @@ int32 IO_TransUdpConfigSocket(IO_TransUdpConfig_t *config, IO_TransUdp_t *udp) "IO_TransUDP Error: Bad config timeout input."); return IO_TRANS_UDP_BAD_INPUT_ERROR; } + + /* Initialize socket address structures */ + CFE_PSP_MemSet((void *) &udp->sockAddr, 0x0, sizeof(struct sockaddr_in)); + CFE_PSP_MemSet((void *) &udp->srcAddr, 0x0, sizeof(struct sockaddr_in)); + CFE_PSP_MemSet((void *) &udp->destAddr, 0x0, sizeof(struct sockaddr_in)); /* Get IP address from cAddr */ /* NOTE: inet_aton errors out if cAddr = "0.0.0.0", the value of @@ -122,6 +134,26 @@ int32 IO_TransUdpConfigSocket(IO_TransUdpConfig_t *config, IO_TransUdp_t *udp) } else { + /* + Start hostname snippet from: https://stackoverflow.com/questions/38002016/problems-with-gethostbyname-c + */ + struct hostent *he; + struct in_addr **addr_list; + int i; + + if ( (he = gethostbyname(config->cAddr) ) != NULL) + { + addr_list = (struct in_addr **) he->h_addr_list; + for(i = 0; addr_list[i] != NULL; i++) + { + //Return the first one; + strcpy(config->cAddr, inet_ntoa(*addr_list[i])); + break; + } + } + /* + End hostname snippet from: https://stackoverflow.com/questions/38002016/problems-with-gethostbyname-c + */ status = inet_aton(&config->cAddr[0], (struct in_addr *) &uiAddr); if (status == INET_ATON_ERROR) { @@ -132,11 +164,6 @@ int32 IO_TransUdpConfigSocket(IO_TransUdpConfig_t *config, IO_TransUdp_t *udp) } } - /* Initialize socket address structures */ - CFE_PSP_MemSet((void *) &udp->sockAddr, 0x0, sizeof(struct sockaddr_in)); - CFE_PSP_MemSet((void *) &udp->srcAddr, 0x0, sizeof(struct sockaddr_in)); - CFE_PSP_MemSet((void *) &udp->destAddr, 0x0, sizeof(struct sockaddr_in)); - /* Save UDP Socket Addr structure */ udp->sockAddr.sin_family = AF_INET; udp->sockAddr.sin_addr.s_addr = uiAddr; @@ -244,6 +271,27 @@ int32 IO_TransUdpSetDestAddr(IO_TransUdp_t *udp, char * destAddr, } /* Get IP address from cAddr */ + /* + Start hostname snippet from: https://stackoverflow.com/questions/38002016/problems-with-gethostbyname-c + */ + struct hostent *he; + struct in_addr **addr_list; + int i; + + if ( (he = gethostbyname(destAddr) ) != NULL) + { + addr_list = (struct in_addr **) he->h_addr_list; + for(i = 0; addr_list[i] != NULL; i++) + { + // Return the first one; + strcpy(destAddr , inet_ntoa(*addr_list[i])); + break; + } + } + /* + End hostname snippet from: https://stackoverflow.com/questions/38002016/problems-with-gethostbyname-c + */ + status = inet_aton(destAddr, (struct in_addr *) &uiAddr); if (status == INET_ATON_ERROR) { From f678ced3041affb0efd29f919605d145dbd8c6cb Mon Sep 17 00:00:00 2001 From: "D. Cody Cutright" Date: Wed, 19 Jul 2023 19:48:26 +0000 Subject: [PATCH 03/10] IO_Lib SDLP init debug --- fsw/src/services/tm_sdlp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index ae369c6..5e1336b 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -163,6 +163,16 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, goto end_of_function; } +#ifdef SDLP_DEBUG + printf("TM_SDLP Initializing channel:\n"); + printf("\t Primary header length: \t%d\n", TMTF_PRIHDR_LENGTH); + printf("\t Secondary header length: \t%d\n", secHdrLength); + printf("\t Data field length: \t%d\n", dataFieldLength); + printf("\t Data field offset: \t%d\n", dataFieldOffset); + printf("\t OCF Length: \t%d\n", TMTF_OCF_LENGTH); // Todo, currently hardcoded + printf("\t FECF length: \t%dn", TMTF_ERR_CTRL_FIELD_LENGTH); //Todo, currently hardcoded +#endif + /* Update the Transfer Frame Info */ pFrameInfo->dataFieldLength = (uint16) dataFieldLength; pFrameInfo->dataFieldOffset = dataFieldOffset; From 0efd340d1357732609877546ef1310c5cc37dc57 Mon Sep 17 00:00:00 2001 From: "D. Cody Cutright" Date: Mon, 24 Jul 2023 19:03:22 +0000 Subject: [PATCH 04/10] Add stubs for SDLS Header & Trailer --- fsw/src/services/tm_sdlp.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index 5e1336b..be1d27b 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -104,6 +104,8 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, uint16 dataFieldOffset; uint16 secHdrLength; uint16 gvcid = 0; + uint8 sdlsSecurityHeaderLength = 0; + uint8 sdlsSecurityTrailerLength = 0; char mutName[OS_MAX_API_NAME]; if (pGlobalConfig == NULL || pChannelConfig == NULL || pFrameInfo == NULL || @@ -141,8 +143,20 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, dataFieldOffset += secHdrLength + 1; } + // IF using SDLS + if (1) + { + dataFieldOffset += sdlsSecurityHeaderLength; + } + dataFieldLength -= dataFieldOffset; + // IF using SDLS + if (1) + { + dataFieldLength -= sdlsSecurityTrailerLength; + } + if (pChannelConfig->ocfFlag == TRUE) { dataFieldLength -= TMTF_OCF_LENGTH; From 642c12b9aa0bb0c36ac11c8540a287eddcc9ca92 Mon Sep 17 00:00:00 2001 From: "David C. Cutright" Date: Fri, 28 Jul 2023 12:07:53 -0400 Subject: [PATCH 05/10] WIP - cFS TM SDLS Integration --- CMakeLists.txt | 2 ++ fsw/public_inc/tm_sdlp.h | 3 ++- fsw/src/services/tm_sdlp.c | 41 ++++++++++++++++++++++++++++---------- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e41bc1a..3411a4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,5 +7,7 @@ aux_source_directory(fsw/src APP_SRC_FILES) aux_source_directory(fsw/src/formats APP_SRC_FILES) aux_source_directory(fsw/src/services APP_SRC_FILES) +include_directories(${MISSION_SOURCE_DIR}/../components/cryptolib/include) + # Create the app module add_cfe_app(io_lib ${APP_SRC_FILES}) diff --git a/fsw/public_inc/tm_sdlp.h b/fsw/public_inc/tm_sdlp.h index 4f4a788..499d8e2 100644 --- a/fsw/public_inc/tm_sdlp.h +++ b/fsw/public_inc/tm_sdlp.h @@ -37,6 +37,7 @@ extern "C" { *******************************************************************************/ #include "io_lib.h" #include "tmtf.h" +#include "crypto.h" /******************************************************************************* @@ -63,7 +64,7 @@ typedef struct } TM_SDLP_GlobalConfig_t; -/** Following Structure is the user defined managed /configuration parameters +/** Following Structure is the user defined managed / configuration parameters for a a specific Channel (Master or virtual) */ typedef struct { diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index be1d27b..90d28ef 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -107,6 +107,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, uint8 sdlsSecurityHeaderLength = 0; uint8 sdlsSecurityTrailerLength = 0; char mutName[OS_MAX_API_NAME]; + SecurityAssociation_t* sa_ptr = NULL; if (pGlobalConfig == NULL || pChannelConfig == NULL || pFrameInfo == NULL || pOverflowBuffer == NULL || pTfBuffer == NULL) @@ -143,17 +144,35 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, dataFieldOffset += secHdrLength + 1; } + // Need SA information for security parameter lengths + // Query SA DB for active SA / SDLS parameters + if (sadb_routine == NULL) // This should not happen, but tested here for safety + { + printf(KRED "ERROR: SA DB Not initalized! -- CRYPTO_LIB_ERR_NO_INIT, Will Exit\n" RESET); + iStatus = CRYPTO_LIB_ERR_NO_INIT; + } + else + { + // CODE REVIEW - Use of MAP_IDs seems non-correct. They exist for TC specifically, but somehow overtime + // we've morphed and have a TYPE_TC and TYPE_TM enum - realistically MAP_IDs are a set of allowable values + // this might take some figurin' + iStatus = sadb_routine->sadb_get_operational_sa_from_gvcid(0, pGlobalConfig->scId, pChannelConfig->vcId, 0, &sa_ptr); + } + // IF using SDLS if (1) { + sdlsSecurityHeaderLength = Crypto_Get_Security_Header_Length(sa_ptr); dataFieldOffset += sdlsSecurityHeaderLength; } + // Reduce available field length based on cumulative offset dataFieldLength -= dataFieldOffset; // IF using SDLS if (1) { + sdlsSecurityTrailerLength = Crypto_Get_Security_Trailer_Length(sa_ptr); dataFieldLength -= sdlsSecurityTrailerLength; } @@ -167,6 +186,18 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, dataFieldLength -= TMTF_ERR_CTRL_FIELD_LENGTH; } +#ifdef SDLP_DEBUG + printf("TM_SDLP Initializing channel:\n"); + printf("\t Primary header length: \t%d\n", TMTF_PRIHDR_LENGTH); + printf("\t Secondary header length: \t%d\n", secHdrLength); + printf("\t Security header length: \t%d\n", sdlsSecurityHeaderLength); + printf("\t Data field offset: \t%d\n", dataFieldOffset); + printf("\t Data field length: \t%d\n", dataFieldLength); + printf("\t Security trailer length: \t%d\n", sdlsSecurityTrailerLength); + printf("\t OCF Length: \t%d HARCODED - to be changed\n", TMTF_OCF_LENGTH); // Todo, currently hardcoded + printf("\t FECF length: \t%d HARDCODED - to be changed\n", TMTF_ERR_CTRL_FIELD_LENGTH); //Todo, currently hardcoded +#endif + if (dataFieldLength < 0) { CFE_EVS_SendEvent(IO_LIB_TM_SDLP_EID, CFE_EVS_ERROR, @@ -177,16 +208,6 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, goto end_of_function; } -#ifdef SDLP_DEBUG - printf("TM_SDLP Initializing channel:\n"); - printf("\t Primary header length: \t%d\n", TMTF_PRIHDR_LENGTH); - printf("\t Secondary header length: \t%d\n", secHdrLength); - printf("\t Data field length: \t%d\n", dataFieldLength); - printf("\t Data field offset: \t%d\n", dataFieldOffset); - printf("\t OCF Length: \t%d\n", TMTF_OCF_LENGTH); // Todo, currently hardcoded - printf("\t FECF length: \t%dn", TMTF_ERR_CTRL_FIELD_LENGTH); //Todo, currently hardcoded -#endif - /* Update the Transfer Frame Info */ pFrameInfo->dataFieldLength = (uint16) dataFieldLength; pFrameInfo->dataFieldOffset = dataFieldOffset; From fdc2678021b7fb5b95793238108053cf8239cfe1 Mon Sep 17 00:00:00 2001 From: "D. Cody Cutright" Date: Wed, 2 Aug 2023 14:46:25 +0000 Subject: [PATCH 06/10] WIP - TM loads w/ sa --- fsw/public_inc/io_lib.h | 1 + fsw/src/services/tm_sdlp.c | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/fsw/public_inc/io_lib.h b/fsw/public_inc/io_lib.h index 4da7433..a199554 100644 --- a/fsw/public_inc/io_lib.h +++ b/fsw/public_inc/io_lib.h @@ -22,6 +22,7 @@ #include "cfe.h" #include "common_types.h" #include "network_includes.h" +#include "crypto.h" #ifdef _VXWORKS_OS_ /* For vxworks, include ioLib for ioctl suport */ diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index 90d28ef..c78ba91 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -108,7 +108,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, uint8 sdlsSecurityTrailerLength = 0; char mutName[OS_MAX_API_NAME]; SecurityAssociation_t* sa_ptr = NULL; - + if (pGlobalConfig == NULL || pChannelConfig == NULL || pFrameInfo == NULL || pOverflowBuffer == NULL || pTfBuffer == NULL) { @@ -119,7 +119,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, iStatus = TM_SDLP_INVALID_POINTER; goto end_of_function; } - + secHdrLength = pChannelConfig->secHdrLength; /* The secHdr Length must be between 1-63 bytes if present. @@ -128,6 +128,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, (secHdrLength > TMTF_SECHDR_MAX_LENGTH || secHdrLength < 1)) || (pChannelConfig->fshFlag == FALSE && secHdrLength != 0)) { + CFE_EVS_SendEvent(IO_LIB_TM_SDLP_EID, CFE_EVS_ERROR, "TM_SDLP_InitChannel Error: " "Invalid SecHdrLength:%d", secHdrLength); @@ -135,7 +136,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, iStatus = TM_SDLP_INVALID_LENGTH; goto end_of_function; } - + dataFieldLength = (int32) pGlobalConfig->frameLength; dataFieldOffset = TMTF_PRIHDR_LENGTH; @@ -156,12 +157,20 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, // CODE REVIEW - Use of MAP_IDs seems non-correct. They exist for TC specifically, but somehow overtime // we've morphed and have a TYPE_TC and TYPE_TM enum - realistically MAP_IDs are a set of allowable values // this might take some figurin' - iStatus = sadb_routine->sadb_get_operational_sa_from_gvcid(0, pGlobalConfig->scId, pChannelConfig->vcId, 0, &sa_ptr); + + iStatus = sadb_routine->sadb_get_operational_sa_from_gvcid(0, (uint16)pGlobalConfig->scId, (uint16)pChannelConfig->vcId, 0, &sa_ptr); + + if (iStatus != CRYPTO_LIB_SUCCESS) + { + printf(KRED "Error retrieving operational SA. Error code %d\n" RESET, iStatus); + return iStatus; + } } // IF using SDLS if (1) { + sdlsSecurityHeaderLength = Crypto_Get_Security_Header_Length(sa_ptr); dataFieldOffset += sdlsSecurityHeaderLength; } @@ -172,6 +181,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, // IF using SDLS if (1) { + sdlsSecurityTrailerLength = Crypto_Get_Security_Trailer_Length(sa_ptr); dataFieldLength -= sdlsSecurityTrailerLength; } @@ -186,7 +196,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, dataFieldLength -= TMTF_ERR_CTRL_FIELD_LENGTH; } -#ifdef SDLP_DEBUG +#ifdef TM_DEBUG printf("TM_SDLP Initializing channel:\n"); printf("\t Primary header length: \t%d\n", TMTF_PRIHDR_LENGTH); printf("\t Secondary header length: \t%d\n", secHdrLength); @@ -490,7 +500,7 @@ int32 TM_SDLP_StartFrame(TM_SDLP_FrameInfo_t *pFrameInfo) iStatus = TM_SDLP_FRAME_NOT_INIT; goto end_of_function; } - + OS_MutSemTake(pFrameInfo->mutexId); /* If the frame is already started, issue a warning. */ @@ -503,7 +513,7 @@ int32 TM_SDLP_StartFrame(TM_SDLP_FrameInfo_t *pFrameInfo) /* Set Frame as ready */ pFrameInfo->isReady = TRUE; - + pOverflow = &pFrameInfo->overflowInfo; lengthToCopy = pOverflow->buffSize - pOverflow->freeOctets; From 99ffea260c0952cb2792aa2958c0fb24b8e0f7d4 Mon Sep 17 00:00:00 2001 From: "D. Cody Cutright" Date: Wed, 2 Aug 2023 14:59:34 +0000 Subject: [PATCH 07/10] Change return to match goto pattern --- fsw/src/services/tm_sdlp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index c78ba91..fed818f 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -163,7 +163,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, if (iStatus != CRYPTO_LIB_SUCCESS) { printf(KRED "Error retrieving operational SA. Error code %d\n" RESET, iStatus); - return iStatus; + goto end_of_function; } } From 992a83233bd04dcc9ef086e7c031aa4d0f5bc0e1 Mon Sep 17 00:00:00 2001 From: "David C. Cutright" Date: Tue, 15 Aug 2023 12:39:13 -0400 Subject: [PATCH 08/10] Verified plaintext output correct and valid --- fsw/src/services/tm_sdlp.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index fed818f..e30cb16 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -157,9 +157,8 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, // CODE REVIEW - Use of MAP_IDs seems non-correct. They exist for TC specifically, but somehow overtime // we've morphed and have a TYPE_TC and TYPE_TM enum - realistically MAP_IDs are a set of allowable values // this might take some figurin' - iStatus = sadb_routine->sadb_get_operational_sa_from_gvcid(0, (uint16)pGlobalConfig->scId, (uint16)pChannelConfig->vcId, 0, &sa_ptr); - + if (iStatus != CRYPTO_LIB_SUCCESS) { printf(KRED "Error retrieving operational SA. Error code %d\n" RESET, iStatus); @@ -168,9 +167,9 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, } // IF using SDLS + // TODO Review this if_statement if (1) { - sdlsSecurityHeaderLength = Crypto_Get_Security_Header_Length(sa_ptr); dataFieldOffset += sdlsSecurityHeaderLength; } @@ -181,7 +180,6 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, // IF using SDLS if (1) { - sdlsSecurityTrailerLength = Crypto_Get_Security_Trailer_Length(sa_ptr); dataFieldLength -= sdlsSecurityTrailerLength; } @@ -200,6 +198,10 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, printf("TM_SDLP Initializing channel:\n"); printf("\t Primary header length: \t%d\n", TMTF_PRIHDR_LENGTH); printf("\t Secondary header length: \t%d\n", secHdrLength); + printf("\t\t SPI Length: 2 bytes\n"); + printf("\t\t IV Length: %d bytes\n", sa_ptr->shivf_len); + printf("\t\t SNF Length Length: %d bytes\n", sa_ptr->shsnf_len); + printf("\t\t PLF Length: %d bytes\nEnable", sa_ptr->shplf_len); printf("\t Security header length: \t%d\n", sdlsSecurityHeaderLength); printf("\t Data field offset: \t%d\n", dataFieldOffset); printf("\t Data field length: \t%d\n", dataFieldLength); @@ -310,6 +312,12 @@ int32 TM_SDLP_FrameHasData(TM_SDLP_FrameInfo_t *pFrameInfo) hasData = TM_SDLP_INVALID_POINTER; goto end_of_function; } + +#ifdef TM_DEBUG + printf("*** DATA LENGTH INFO!***\n"); + printf("*** Free Octets: %d\n", pFrameInfo->freeOctets); + printf("*** dataFieldLength: %d\n", pFrameInfo->dataFieldLength); +#endif if (pFrameInfo->freeOctets < pFrameInfo->dataFieldLength) { From 79651819da149aaa06fae7d1f28dd14673c9fdc5 Mon Sep 17 00:00:00 2001 From: dccutrig <91623137+dccutrig@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:43:12 -0400 Subject: [PATCH 09/10] Minor sa interface updates --- fsw/src/services/tm_sdlp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index e30cb16..71f7122 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -147,7 +147,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, // Need SA information for security parameter lengths // Query SA DB for active SA / SDLS parameters - if (sadb_routine == NULL) // This should not happen, but tested here for safety + if (sa_if == NULL) // This should not happen, but tested here for safety { printf(KRED "ERROR: SA DB Not initalized! -- CRYPTO_LIB_ERR_NO_INIT, Will Exit\n" RESET); iStatus = CRYPTO_LIB_ERR_NO_INIT; @@ -157,7 +157,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, // CODE REVIEW - Use of MAP_IDs seems non-correct. They exist for TC specifically, but somehow overtime // we've morphed and have a TYPE_TC and TYPE_TM enum - realistically MAP_IDs are a set of allowable values // this might take some figurin' - iStatus = sadb_routine->sadb_get_operational_sa_from_gvcid(0, (uint16)pGlobalConfig->scId, (uint16)pChannelConfig->vcId, 0, &sa_ptr); + iStatus = sa_if->sa_get_operational_sa_from_gvcid(0, (uint16)pGlobalConfig->scId, (uint16)pChannelConfig->vcId, 0, &sa_ptr); if (iStatus != CRYPTO_LIB_SUCCESS) { From f9c841b42dec4b485cb02dbf5a682e974461606c Mon Sep 17 00:00:00 2001 From: "Lucas, John P" Date: Tue, 2 Apr 2024 15:48:38 -0400 Subject: [PATCH 10/10] [nos3#202] Add additional prints for scid and vcid on error; --- fsw/src/services/tm_sdlp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fsw/src/services/tm_sdlp.c b/fsw/src/services/tm_sdlp.c index 12c2a8d..1159a4f 100644 --- a/fsw/src/services/tm_sdlp.c +++ b/fsw/src/services/tm_sdlp.c @@ -160,7 +160,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, if (iStatus != CRYPTO_LIB_SUCCESS) { - printf(KRED "Error retrieving operational SA. Error code %d\n" RESET, iStatus); + printf(KRED "Error retrieving operational SA. Error code %d. scId = %d, vcId = %d \n" RESET, iStatus, pGlobalConfig->scId, pChannelConfig->vcId); goto end_of_function; } } @@ -205,7 +205,7 @@ int32 TM_SDLP_InitChannel(TM_SDLP_FrameInfo_t *pFrameInfo, printf("\t Data field offset: \t%d\n", dataFieldOffset); printf("\t Data field length: \t%d\n", dataFieldLength); printf("\t Security trailer length: \t%d\n", sdlsSecurityTrailerLength); - printf("\t OCF Length: \t%d HARCODED - to be changed\n", TMTF_OCF_LENGTH); // Todo, currently hardcoded + printf("\t OCF Length: \t%d HARDCODED - to be changed\n", TMTF_OCF_LENGTH); // Todo, currently hardcoded printf("\t FECF length: \t%d HARDCODED - to be changed\n", TMTF_ERR_CTRL_FIELD_LENGTH); //Todo, currently hardcoded #endif