+
+ # if it is a configure, unlink all the nodes and users that
+ # are not in @refs but are in the node, then add all the
+ # nodes and users that are @refs but not in the node.
+ #
+ if ($sort eq 'C') {
+ my @dn;
+ my @du;
+ my @an;
+ my @au;
+ for my $r (map {Route::Node::get($_)} $node->nodes) {
+ next unless $r;
+ push @dn, $r unless grep $_->call eq $r->call, @refs;
+ }
+ for my $r (map {Route::User::get($_)} $node->users) {
+ next unless $r;
+ push @du, $r unless grep $_->call eq $r->call, @refs;
+ }
+ for my $r (@refs) {
+ next unless $r;
+ if ($r->isa('Route::Node')) {
+ push @an, $r unless grep $r->call eq $_, $node->nodes;
+ } elsif ($r->isa('Route::User')) {
+ push @au, $r unless grep $r->call eq $_, $node->users;
+ }
+ }
+ push @delnode, $node->unlink_node($_, $self) for @dn;
+ push @deluser, $node->del_user($_) for @du;
+ push @addnode, $node->link_node($_, $self) for @an;
+ push @adduser, $node->add_user($_) for @au;
+ }
+
+
+ $self->route_pc21($origin, $line, @delnode) if @delnode;
+ $self->route_pc19($origin, $line, @addnode) if @addnode;
+ $self->route_pc17($origin, $line, @deluser) if @deluser;
+ $self->route_pc16($origin, $line, @adduser) if @adduser;
+
+ $self->route_pc59($sort, $hextime, $ncall, @refs) if @refs;
+ $_->delete for @delnode, @deluser;