$self->pidl_code("$dissectorname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_)");
$self->pidl_code("{");
$self->indent;
- $self->pidl_code("g$e->{BASE_TYPE} parameter=0;");
+ my $type = $e->{BASE_TYPE};
+ $type = "uint1632" if ($e->{BASE_TYPE} eq "uint16");
+ $self->pidl_code("g${type} parameter=0;");
$self->pidl_code("if(param){");
$self->indent;
- $self->pidl_code("parameter=(g$e->{BASE_TYPE})*param;");
+ $self->pidl_code("parameter=(g${type})*param;");
$self->deindent;
$self->pidl_code("}");
- $self->pidl_code("offset = dissect_ndr_$e->{BASE_TYPE}(tvb, offset, pinfo, tree, drep, hf_index, ¶meter);");
+ $self->pidl_code("offset = dissect_ndr_${type}(tvb, offset, pinfo, tree, drep, hf_index, ¶meter);");
$self->pidl_code("if(param){");
$self->indent;
$self->pidl_code("*param=(guint32)parameter;");
return $index;
}
+sub change_hf_field_type($$$$)
+{
+ my ($self,$index,$ft_type,$base_type) = @_;
+ if (defined ($self->{conformance}->{hf_renames}->{$index})) {
+ print "Field $index has been renamed to ".$self->{conformance}->{hf_renames}->{$index}->{NEWNAME}." you can't change it's type";
+ return 0;
+ }
+
+ if (!defined ($self->{conformance}->{header_fields}->{$index})) {
+ print "Field $index doesn't exists";
+ return 0;
+ }
+ $self->{conformance}->{header_fields}->{$index}->{FT_TYPE} = $ft_type;
+ $self->{conformance}->{header_fields}->{$index}->{BASE_TYPE} = $base_type;
+ return 1;
+}
+
sub DumpHfDeclaration($)
{
my ($self) = @_;