diff options
Diffstat (limited to 'epan/dissectors/asn1/rtse/rtse.cnf')
-rw-r--r-- | epan/dissectors/asn1/rtse/rtse.cnf | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/rtse/rtse.cnf b/epan/dissectors/asn1/rtse/rtse.cnf new file mode 100644 index 00000000..8bf5a8c9 --- /dev/null +++ b/epan/dissectors/asn1/rtse/rtse.cnf @@ -0,0 +1,186 @@ +#.EXPORTS +RTORQapdu +RTOACapdu +RTORJapdu +RTABapdu + +#.NO_EMIT ONLY_VALS +RTSE-apdus + +#.FN_BODY RTORJapdu/userDataRJ + struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + const char *oid = NULL; + + switch(app_proto) { + case 1: /* mts-transfer-protocol-1984 */ + oid = "applicationProtocol.1"; + break; + case 12: /* mts-transfer-protocol */ + oid = "applicationProtocol.12"; + break; + default: + if(session && session->pres_ctx_id) + oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id); + break; + } + + if(!oid) /* XXX: problem here is we haven't decoded the applicationProtocol yet - so we make assumptions! */ + oid = "applicationProtocol.12"; + + if(oid) { + if(session != NULL) + session->ros_op = (ROS_OP_BIND | ROS_OP_ERROR); + + offset = call_rtse_oid_callback(oid, tvb, offset, actx->pinfo, top_tree ? top_tree : tree, session); + } + +#.FN_BODY RTABapdu/userdataAB +/*XXX not implemented yet */ + +#.FN_BODY RTORQapdu + struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + + if(session != NULL) + session->ros_op = (ROS_OP_BIND | ROS_OP_ARGUMENT); + open_request=TRUE; + %(DEFAULT_BODY)s + open_request=FALSE; + +#.FN_BODY RTOACapdu + struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + + if(session != NULL) + session->ros_op = (ROS_OP_BIND | ROS_OP_RESULT); + + %(DEFAULT_BODY)s + +#.FN_BODY ConnectionData/open + + struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + const char *oid = NULL; + + switch(app_proto) { + case 1: /* mts-transfer-protocol-1984 */ + oid = "applicationProtocol.1"; + break; + case 12: /* mts-transfer-protocol */ + oid = "applicationProtocol.12"; + break; + default: + if(session && session->pres_ctx_id) + oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id); + break; + } + + if(!oid) /* XXX: problem here is we haven't decoded the applicationProtocol yet - so we make assumptions! */ + oid = "applicationProtocol.12"; + + if(oid) { + + offset = call_rtse_oid_callback(oid, tvb, offset, actx->pinfo, top_tree ? top_tree : tree, session); + } + + /* else XXX: need to flag we can't find the presentation context */ + +#.FN_BODY RTTRapdu + tvbuff_t *next_tvb = NULL; + struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + + offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_index, &next_tvb); + + if(next_tvb) { + + /* XXX: we should check is this is an EXTERNAL first */ + + /* ROS won't do this for us */ + if(session) + session->ros_op = (ROS_OP_INVOKE | ROS_OP_ARGUMENT); + + offset = dissect_ber_external_type(FALSE, tree, next_tvb, 0, actx, -1, call_rtse_external_type_callback); + } + + +#.FN_BODY RTORQapdu/applicationProtocol + + offset = dissect_ber_integer(TRUE, actx, tree, tvb, offset, hf_index, &app_proto); + +#.FN_BODY SessionConnectionIdentifier + if(open_request){ + col_append_str(actx->pinfo->cinfo, COL_INFO, "Recover"); + } + %(DEFAULT_BODY)s + +#.END + +#.FN_BODY CallingSSuserReference/t61String VAL_PTR=&string + tvbuff_t *string = NULL; + %(DEFAULT_BODY)s + if(open_request && string) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", tvb_get_string_enc(actx->pinfo->pool, string, 0, + tvb_reported_length(string), ENC_T61)); + +#.TYPE_ATTR +CallingSSuserReference/t61String DISPLAY = BASE_NONE + +#.FN_PARS CommonReference + VAL_PTR=&string +#.FN_BODY CommonReference + tvbuff_t *string = NULL; + %(DEFAULT_BODY)s + if(open_request && string) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", tvb_format_text(actx->pinfo->pool, string, 0, tvb_reported_length(string))); + +#.END + +#.FN_BODY CallingSSuserReference/octetString VAL_PTR=&string + tvbuff_t *string = NULL; + %(DEFAULT_BODY)s + if(open_request && string) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", tvb_format_text(actx->pinfo->pool, string, 0, tvb_reported_length(string))); + +#.FN_BODY RTTPapdu VAL_PTR=&priority + int priority = -1; + + col_append_str(actx->pinfo->cinfo, COL_INFO, "Turn-Please"); + + %(DEFAULT_BODY)s + + if(priority != -1) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%d)", priority); + +#.FN_BODY RTORJapdu + col_append_str(actx->pinfo->cinfo, COL_INFO, "Refuse"); + + %(DEFAULT_BODY)s + +#.FN_PARS RefuseReason + VAL_PTR=&reason + +#.FN_BODY RefuseReason + int reason = -1; + + %(DEFAULT_BODY)s + + if(reason != -1) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(reason, rtse_RefuseReason_vals, "reason(%%d)")); + +#.FN_BODY RTABapdu + col_append_str(actx->pinfo->cinfo, COL_INFO, "Abort"); + + %(DEFAULT_BODY)s + +#.FN_PARS AbortReason + VAL_PTR=&reason + +#.FN_BODY AbortReason + int reason = -1; + + %(DEFAULT_BODY)s + + if(reason != -1) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(reason, rtse_AbortReason_vals, "reason(%%d)")); + +#.TYPE_ATTR +AdditionalReferenceInformation DISPLAY = BASE_NONE + +#.END |