static void dissect_tacplus_body(tvbuff_t * hdr_tvb, tvbuff_t * tvb, proto_tree * tree ) { int type = tvb_get_guint8( hdr_tvb, H_TYPE_OFF ); int seq_no = tvb_get_guint8( hdr_tvb, H_SEQ_NO_OFF ); switch (type) { case TAC_PLUS_AUTHEN: if ( seq_no & 0x01) { if ( seq_no == 1 ) dissect_tacplus_body_authen_req( tvb, tree ); else dissect_tacplus_body_authen_req_cont( tvb, tree ); } else { dissect_tacplus_body_authen_rep( tvb, tree ); } break; case TAC_PLUS_AUTHOR: if ( seq_no & 0x01) dissect_tacplus_body_author_req( tvb, tree ); else dissect_tacplus_body_author_rep( tvb, tree ); break; case TAC_PLUS_ACCT: if ( seq_no & 0x01) dissect_tacplus_body_acct_req( tvb, tree ); else dissect_tacplus_body_acct_rep( tvb, tree ); break; default: proto_tree_add_text( tree, tvb, 0, tvb_length( tvb ), "Bogus.."); break; } }
static void dissect_tacplus_body(tvbuff_t * hdr_tvb, packet_info *pinfo, tvbuff_t * tvb, proto_tree * tree ) { int type = tvb_get_guint8( hdr_tvb, H_TYPE_OFF ); int seq_no = tvb_get_guint8( hdr_tvb, H_SEQ_NO_OFF ); switch (type) { case TAC_PLUS_AUTHEN: if ( seq_no & 0x01) { if ( seq_no == 1 ) dissect_tacplus_body_authen_req( tvb, tree ); else dissect_tacplus_body_authen_req_cont( tvb, tree ); } else { dissect_tacplus_body_authen_rep( tvb, tree ); } break; case TAC_PLUS_AUTHOR: if ( seq_no & 0x01) dissect_tacplus_body_author_req( tvb, tree ); else dissect_tacplus_body_author_rep( tvb, tree ); break; case TAC_PLUS_ACCT: if ( seq_no & 0x01) dissect_tacplus_body_acct_req( tvb, tree ); else dissect_tacplus_body_acct_rep( tvb, tree ); break; default: proto_tree_add_expert( tree, pinfo, &ei_tacplus_bogus_data, tvb, 0, -1); break; } }