forked from osmocom/wireshark
cd02af56a1
This mostly involved adding expert info capabilities to many of the dissectors so that they could correctly flag error conditions. Only remaining proto_tree_add_text calls are in H248.cnf, which has a convoluted way of using hf_ data to make its tree. Change-Id: I6412150c2ec1977d7fa38f3f0ed416680bdfb141 Reviewed-on: https://code.wireshark.org/review/3500 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
208 lines
7 KiB
INI
208 lines
7 KiB
INI
#.EXPORTS
|
|
OPERATION
|
|
ERROR
|
|
OPERATION-PACKAGE
|
|
CONTRACT
|
|
InvokeId
|
|
Code
|
|
ROS
|
|
|
|
#.OMIT_ASSIGNMENT
|
|
Priority
|
|
#.END
|
|
|
|
#.TYPE_RENAME
|
|
ReturnResult/result/result OperationResult
|
|
|
|
#.FIELD_RENAME
|
|
Reject/problem/invoke invokeProblem
|
|
ReturnResult/result/result operationResult
|
|
Reject/problem/returnError rejectError
|
|
Reject/problem/returnResult rejectResult
|
|
|
|
#.FN_PARS OperationCode VAL_PTR = &opcode
|
|
|
|
#.FN_PARS ErrorCode VAL_PTR = &opcode
|
|
|
|
#.FN_PARS InvokeId/present VAL_PTR = &invokeid
|
|
|
|
#.FN_BODY Invoke/argument
|
|
char *oid;
|
|
proto_tree* subtree;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
subtree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_ros_invoke_argument, NULL, "invoke argument");
|
|
|
|
ros_match_call_response(tvb, actx->pinfo, subtree, invokeid, TRUE);
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_INVOKE | ROS_OP_ARGUMENT);
|
|
/* now add the opcode */
|
|
session->ros_op |= opcode;
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ReturnResult/result/result
|
|
char *oid;
|
|
proto_tree* subtree;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
subtree = proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_return_result, NULL, "return result");
|
|
|
|
ros_match_call_response(tvb, actx->pinfo, subtree, invokeid, FALSE);
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_INVOKE | ROS_OP_RESULT);
|
|
/* now add the opcode */
|
|
session->ros_op |= opcode;
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ReturnError/parameter
|
|
char *oid;
|
|
proto_tree* subtree;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
subtree = proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_return_result, NULL, "return result");
|
|
|
|
ros_match_call_response(tvb, actx->pinfo, subtree, invokeid, FALSE);
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_INVOKE | ROS_OP_ERROR);
|
|
/* now add the opcode (really the error code) */
|
|
session->ros_op |= opcode;
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ROS/bind-invoke
|
|
char *oid;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_bind_result, NULL, "bind-invoke");
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_BIND | ROS_OP_ARGUMENT);
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ROS/bind-result
|
|
char *oid;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_bind_result, NULL, "bind-result");
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_BIND | ROS_OP_RESULT);
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ROS/bind-error
|
|
char *oid;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_bind_error, NULL, "bind-error");
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_BIND | ROS_OP_ERROR);
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
|
|
#.FN_BODY ROS/unbind-invoke
|
|
char *oid;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_unbind_invoke, NULL, "unbind-invoke");
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_UNBIND | ROS_OP_ARGUMENT);
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
|
|
#.FN_BODY ROS/unbind-result
|
|
char *oid;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_unbind_result, NULL, "unbind-result");
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_UNBIND | ROS_OP_RESULT);
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ROS/unbind-error
|
|
char *oid;
|
|
struct SESSION_DATA_STRUCTURE* session = (struct SESSION_DATA_STRUCTURE *)actx->private_data;
|
|
|
|
/* not sure what the length should be - -1 for now */
|
|
proto_tree_add_subtree(tree, tvb, offset,-1, ett_ros_unbind_error, NULL, "unbind-error");
|
|
|
|
if(session && session->pres_ctx_id && (oid = find_oid_by_pres_ctx_id(actx->pinfo, session->pres_ctx_id))) {
|
|
/* this should be ROS! */
|
|
session->ros_op = (ROS_OP_UNBIND | ROS_OP_ERROR);
|
|
offset = call_ros_oid_callback(oid, tvb, offset, actx->pinfo, top_tree, session);
|
|
}
|
|
|
|
#.FN_BODY ROS/reject
|
|
col_set_str(actx->pinfo->cinfo, COL_INFO, "Reject");
|
|
%(DEFAULT_BODY)s
|
|
|
|
#.FN_PARS GeneralProblem
|
|
VAL_PTR = &problem
|
|
|
|
#.FN_BODY GeneralProblem
|
|
guint32 problem;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", val_to_str(problem, ros_GeneralProblem_vals, "GeneralProblem(%%d)"));
|
|
|
|
#.FN_PARS InvokeProblem
|
|
VAL_PTR = &problem
|
|
|
|
#.FN_BODY InvokeProblem
|
|
guint32 problem;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", val_to_str(problem, ros_InvokeProblem_vals, "InvokeProblem(%%d)"));
|
|
|
|
#.FN_PARS ReturnResultProblem
|
|
VAL_PTR = &problem
|
|
|
|
#.FN_BODY ReturnResultProblem
|
|
guint32 problem;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", val_to_str(problem, ros_ReturnResultProblem_vals, "ReturnResultProblem(%%d)"));
|
|
|
|
#.FN_PARS ReturnErrorProblem
|
|
VAL_PTR = &problem
|
|
|
|
#.FN_BODY ReturnErrorProblem
|
|
guint32 problem;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", val_to_str(problem, ros_ReturnErrorProblem_vals, "ReturnErrorProblem(%%d)"));
|
|
|
|
#.END
|