in meta/checkheaders.pl [176:227]
sub CheckHash
{
my ($refA, $refB) = @_;
my %A = %{$refA};
my %B = %{$refB};
for my $key (sort keys %A)
{
if (defined $optionSkipSingleDefined)
{
# ignore attributes end, since those will shift
next if $key =~ /^SAI_\w+_ATTR_END$/;
next if $key =~ /^SAI_\w+_ATTR_CUSTOM_RANGE_END$/;
next if $key eq "SAI_IN_DROP_REASON_END";
next if $key eq "SAI_ACL_TABLE_ATTR_FIELD_END";
next if $key eq "SAI_ACL_ENTRY_ATTR_FIELD_END";
next if $key eq "SAI_ACL_ENTRY_ATTR_ACTION_END";
next if $key eq "SAI_OBJECT_TYPE_MAX";
next if $key eq "SAI_API_MAX";
next if $key eq "SAI_PORT_INTERFACE_TYPE_MAX";
next if $key eq "SAI_PORT_BREAKOUT_MODE_TYPE_MAX";
# NOTE: some other attributes/enum with END range could be added
}
if (not defined $B{$key})
{
if (not defined $optionSkipSingleDefined)
{
LogError "enum $key only defined in $A{$key}{path}:$A{$key}{nr}"
}
else
{
LogInfo "enum $key only defined in $A{$key}{path}:$A{$key}{nr}"
}
next;
}
my $valA = $A{$key}{value};
my $valB = $B{$key}{value};
if ($valA ne $valB)
{
my $locA = "$A{$key}{path}:$A{$key}{nr}";
my $locB = "$B{$key}{path}:$B{$key}{nr}";
LogError "value of $key differ: $locA vs $locB => ($valA != $valB)";
}
}
}