diff --git a/xCAT-server/lib/perl/xCAT/xcatd.pm b/xCAT-server/lib/perl/xCAT/xcatd.pm index 33f6412ca..23cfc5eb3 100644 --- a/xCAT-server/lib/perl/xCAT/xcatd.pm +++ b/xCAT-server/lib/perl/xCAT/xcatd.pm @@ -69,15 +69,18 @@ sub validate { $policytable->close; my $rule; my $peerstatus="untrusted"; + # This sorts the policy table rows based on the level of the priority field in the row. + # note the lower the number in the policy table the higher the priority + my @sortedpolicies = sort { $a->{priority} <=> $b->{priority} } (@$policies); # check to see if peerhost is trusted - foreach $rule (@$policies) { + foreach $rule (@sortedpolicies) { if (($rule->{name} and (($rule->{name} eq $peerhost) || ($rule->{name} eq $peerhostorg))) && ($rule->{rule}=~ /trusted/i)) { $peerstatus="Trusted"; last; } } - RULE: foreach $rule (@$policies) { + RULE: foreach $rule (@sortedpolicies) { if ($rule->{name} and $rule->{name} ne '*') { #TODO: more complex matching (lists, wildcards) next unless ($peername and $peername eq $rule->{name});