sub CheckHash()

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)";
        }
    }
}