12#ifndef __PACKET_PER_H__
13#define __PACKET_PER_H__
16#include "ws_symbol_export.h"
18typedef unsigned (*per_type_fn)(tvbuff_t*, uint32_t offset,
asn1_ctx_t*, proto_tree*, int);
29#define ASN1_NO_EXTENSIONS 0
30#define ASN1_EXTENSION_ROOT ASN1_EXT_ROOT
31#define ASN1_NOT_EXTENSION_ROOT ASN1_EXT_EXT
34#define ASN1_NOT_OPTIONAL 0
35#define ASN1_OPTIONAL ASN1_OPT
51WS_DLL_PUBLIC
void dissect_per_not_decoded_yet(proto_tree* tree,
packet_info* pinfo, tvbuff_t *tvb,
const char* reason);
53WS_DLL_PUBLIC uint32_t dissect_per_null(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index);
55WS_DLL_PUBLIC uint32_t dissect_per_GeneralString(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index);
57WS_DLL_PUBLIC uint32_t dissect_per_sequence_of(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *parent_tree,
int hf_index,
int ett_index,
const per_sequence_t *seq);
59WS_DLL_PUBLIC uint32_t dissect_per_IA5String(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, tvbuff_t **value_tvb);
61WS_DLL_PUBLIC uint32_t dissect_per_NumericString(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, tvbuff_t **value_tvb);
63WS_DLL_PUBLIC uint32_t dissect_per_PrintableString(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, tvbuff_t **value_tvb);
65WS_DLL_PUBLIC uint32_t dissect_per_VisibleString(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, tvbuff_t **value_tvb);
67WS_DLL_PUBLIC uint32_t dissect_per_BMPString(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension);
69WS_DLL_PUBLIC uint32_t dissect_per_UTF8String(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension);
71extern uint32_t dissect_per_object_descriptor(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, tvbuff_t **value_tvb);
73WS_DLL_PUBLIC uint32_t dissect_per_constrained_sequence_of(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *parent_tree,
int hf_index,
int ett_index,
const per_sequence_t *seq,
int min_len,
int max_len,
bool has_extension);
75WS_DLL_PUBLIC uint32_t dissect_per_constrained_set_of(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *parent_tree,
int hf_index,
int ett_index,
const per_sequence_t *seq,
int min_len,
int max_len,
bool has_extension);
77WS_DLL_PUBLIC uint32_t dissect_per_set_of(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *parent_tree,
int hf_index,
int ett_index,
const per_sequence_t *seq);
79WS_DLL_PUBLIC uint32_t dissect_per_object_identifier(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, tvbuff_t **value_tvb);
80WS_DLL_PUBLIC uint32_t dissect_per_object_identifier_str(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
const char **value_stringx);
82WS_DLL_PUBLIC uint32_t dissect_per_relative_oid(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, tvbuff_t **value_tvb);
83WS_DLL_PUBLIC uint32_t dissect_per_relative_oid_str(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
const char **value_stringx);
85WS_DLL_PUBLIC uint32_t dissect_per_boolean(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
bool *bool_val);
87WS_DLL_PUBLIC uint32_t dissect_per_integer(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, int32_t *value);
88WS_DLL_PUBLIC uint32_t dissect_per_integer64b(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, int64_t *value);
89WS_DLL_PUBLIC uint32_t dissect_per_constrained_integer(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, uint32_t min, uint32_t max, uint32_t *value,
bool has_extension);
90WS_DLL_PUBLIC uint32_t dissect_per_constrained_integer_64b(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, uint64_t min, uint64_t max, uint64_t *value,
bool has_extension);
92WS_DLL_PUBLIC uint32_t dissect_per_real(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
double *value);
120WS_DLL_PUBLIC uint32_t dissect_per_choice(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int ett_index,
const per_choice_t *choice,
int *value);
122WS_DLL_PUBLIC uint32_t dissect_per_sequence(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *parent_tree,
int hf_index,
int ett_index,
const per_sequence_t *sequence);
123WS_DLL_PUBLIC uint32_t dissect_per_sequence_eag(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
const per_sequence_t *sequence);
125WS_DLL_PUBLIC uint32_t dissect_per_octet_string(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, tvbuff_t **value_tvb);
126WS_DLL_PUBLIC uint32_t dissect_per_octet_string_containing_pdu_new(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, dissector_t type_cb);
128WS_DLL_PUBLIC uint32_t dissect_per_bit_string(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension,
int *
const *named_bits,
int num_named_bits, tvbuff_t **value_tvb,
int *len);
130WS_DLL_PUBLIC uint32_t dissect_per_bit_string_containing_pdu_new(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension, dissector_t type_cb);
132WS_DLL_PUBLIC uint32_t dissect_per_restricted_character_string(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index,
int min_len,
int max_len,
bool has_extension,
const char *alphabet,
int alphabet_length, tvbuff_t **value_tvb);
134WS_DLL_PUBLIC uint32_t dissect_per_enumerated(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, uint32_t root_num, uint32_t *value,
bool has_extension, uint32_t ext_num,
const uint32_t *value_map);
136WS_DLL_PUBLIC uint32_t dissect_per_open_type(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, per_type_fn type_cb);
137WS_DLL_PUBLIC uint32_t dissect_per_open_type_pdu_new(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, dissector_t type_cb);
139WS_DLL_PUBLIC uint32_t dissect_per_external_type(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, per_type_fn type_cb);
141WS_DLL_PUBLIC uint32_t dissect_per_size_constrained_type(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx, proto_tree *tree,
int hf_index, per_type_fn type_cb,
const char *name,
int min_len,
int max_len,
bool has_extension);
142extern bool get_size_constraint_from_stack(
asn1_ctx_t *actx,
const char *name,
int *pmin_len,
int *pmax_len,
bool *phas_extension);
144extern uint32_t dissect_per_length_determinant(tvbuff_t *tvb, uint32_t offset,
asn1_ctx_t *actx _U_, proto_tree *tree,
int hf_index, uint32_t *length,
bool *is_fragmented);
146WS_DLL_PUBLIC
unsigned call_per_oid_callback(
const char *oid, tvbuff_t *tvb,
packet_info *pinfo, proto_tree *tree,
unsigned offset,
asn1_ctx_t *actx,
int hf_index);
147WS_DLL_PUBLIC
void add_per_encoded_label(tvbuff_t* tvb,
packet_info* pinfo _U_, proto_tree* tree);
150WS_DLL_PUBLIC
void register_per_oid_dissector(
const char *oid, dissector_t dissector,
int proto,
const char *name);
struct _asn1_ctx_t asn1_ctx_t
Central context object threaded through all ASN.1 dissection calls.
struct _packet_info packet_info
Represents the metadata and indexing information for a single captured frame.
Definition packet-per.h:37
Definition packet-per.h:44