diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2013-09-23 12:47:21 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-09-23 12:47:21 +0200 |
commit | 90e1478f11b7a9d253899104b20900bd999970f1 (patch) | |
tree | dad6b3d2f81db53c9ddcb1721a5d6b36c01b6ef5 | |
parent | 2d616c409711f0df968bd894ec7f8c0545257214 (diff) | |
download | rsyslog-90e1478f11b7a9d253899104b20900bd999970f1.tar.gz rsyslog-90e1478f11b7a9d253899104b20900bd999970f1.tar.bz2 rsyslog-90e1478f11b7a9d253899104b20900bd999970f1.zip |
expose so-far msg-internal method to query structured data
This also lead to a slight performance optimization in the msg.c
module (when it comes to querying structured data).
This is stage work in order to provide the capability to fully
parse structured data.
-rw-r--r-- | plugins/mmrfc5424addhmac/mmrfc5424addhmac.c | 3 | ||||
-rw-r--r-- | runtime/msg.c | 33 | ||||
-rw-r--r-- | runtime/msg.h | 1 |
3 files changed, 15 insertions, 22 deletions
diff --git a/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c b/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c index cfeede8a..9d5ac602 100644 --- a/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c +++ b/plugins/mmrfc5424addhmac/mmrfc5424addhmac.c @@ -198,6 +198,9 @@ hashMsg(instanceData *pData, msg_t *pMsg) uchar hashPrintable[2*EVP_MAX_MD_SIZE+1]; DEFiRet; +// Next two debug only! +MsgGetStructuredData(pMsg, &pRawMsg, &lenRawMsg); +dbgprintf("DDDD: STRUCTURED-DATA is: '%s'\n", pRawMsg); getRawMsg(pMsg, &pRawMsg, &lenRawMsg); HMAC(pData->algo, pData->key, pData->keylen, pRawMsg, lenRawMsg, hash, &hashlen); diff --git a/runtime/msg.c b/runtime/msg.c index 47ff240f..85c97741 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -2079,31 +2079,20 @@ finalize_it: RETiRet; } -/* get the length of the "STRUCTURED-DATA" sz string - * rgerhards, 2005-11-24 - */ -#if 0 /* This method is currently not called, be we like to preserve it */ -static int getStructuredDataLen(msg_t *pM) -{ - return (pM->pCSStrucData == NULL) ? 1 : rsCStrLen(pM->pCSStrucData); -} -#endif - -/* get the "STRUCTURED-DATA" as sz string - * rgerhards, 2005-11-24 - */ -static inline char *getStructuredData(msg_t *pM) +/* get the "STRUCTURED-DATA" as sz string, including length */ +void +MsgGetStructuredData(msg_t *pM, uchar **pBuf, rs_size_t *len) { - uchar *pszRet; - MsgLock(pM); - if(pM->pCSStrucData == NULL) - pszRet = UCHAR_CONSTANT("-"); - else - pszRet = rsCStrGetSzStrNoNULL(pM->pCSStrucData); + if(pM->pCSStrucData == NULL) { + *pBuf = UCHAR_CONSTANT("-"), + *len = 1; + } else { + *pBuf = rsCStrGetSzStr(pM->pCSStrucData), + *len = cstrLen(pM->pCSStrucData); + } MsgUnlock(pM); - return (char*) pszRet; } /* get the "programname" as sz string @@ -2873,7 +2862,7 @@ uchar *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe, pRes = (uchar*)getProtocolVersionString(pMsg); break; case PROP_STRUCTURED_DATA: - pRes = (uchar*)getStructuredData(pMsg); + MsgGetStructuredData(pMsg, &pRes, &bufLen); break; case PROP_APP_NAME: pRes = (uchar*)getAPPNAME(pMsg, LOCK_MUTEX); diff --git a/runtime/msg.h b/runtime/msg.h index e220922d..5254f785 100644 --- a/runtime/msg.h +++ b/runtime/msg.h @@ -166,6 +166,7 @@ void MsgSetTAG(msg_t *pMsg, uchar* pszBuf, size_t lenBuf); void MsgSetRuleset(msg_t *pMsg, ruleset_t*); rsRetVal MsgSetFlowControlType(msg_t *pMsg, flowControl_t eFlowCtl); rsRetVal MsgSetStructuredData(msg_t *pMsg, char* pszStrucData); +void MsgGetStructuredData(msg_t *pM, uchar **pBuf, rs_size_t *len); rsRetVal msgSetFromSockinfo(msg_t *pThis, struct sockaddr_storage *sa); void MsgSetRcvFrom(msg_t *pMsg, prop_t*); void MsgSetRcvFromStr(msg_t *pMsg, uchar* pszRcvFrom, int, prop_t **); |