uint32_t produceHAState(void *lwssn, uint8_t *buf) { AppIdSessionHA *appHA = (AppIdSessionHA *)buf; struct AppIdData *appIdData = _dpd.sessionAPI->get_application_data(lwssn, PP_APP_ID); if (appIdData && _dpd.appIdApi->getFlowType(appIdData) != APPID_FLOW_TYPE_NORMAL) appIdData = NULL; if (appIdData) { appHA->flags = APPID_HA_FLAGS_APP; if (TPIsAppIdAvailable(appIdData->tpsession)) appHA->flags |= APPID_HA_FLAGS_TP_DONE; if (getAppIdFlag(appIdData, APPID_SESSION_SERVICE_DETECTED)) appHA->flags |= APPID_HA_FLAGS_SVC_DONE; if (getAppIdFlag(appIdData, APPID_SESSION_HTTP_SESSION)) appHA->flags |= APPID_HA_FLAGS_HTTP; appHA->appId[0] = appIdData->tpAppId; appHA->appId[1] = appIdData->serviceAppId; appHA->appId[2] = appIdData->clientServiceAppId; appHA->appId[3] = appIdData->portServiceAppId; appHA->appId[4] = appIdData->payloadAppId; appHA->appId[5] = appIdData->tpPayloadAppId; appHA->appId[6] = appIdData->clientAppId; appHA->appId[7] = appIdData->miscAppId; } else { memset(appHA->appId, 0, sizeof(appHA->appId)); } return sizeof(*appHA); }
bool isAppIdAvailable(struct AppIdData *appIdData) { if (appIdData) { if (getAppIdFlag(appIdData, APPID_SESSION_NO_TPI)) return true; return TPIsAppIdAvailable(appIdData->tpsession); } return false; }
bool isAppIdAvailable(struct AppIdData *appIdData) { return appIdData? TPIsAppIdAvailable(appIdData->tpsession): false; }