677 if (rosecmpm(addr, &node->address, node->mask) == 0) {
678 for (i = 0; i < node->count; i++) {
679 if (new) {
680 if (node->neighbour[i]->restarted) {
681 res = node->neighbour[i];
682 goto out;
683 }
684 }
685 else {
686 if (!rose_ftimer_running(node->neighbour[i])) {
687 res = node->neighbour[i];
688 goto out;
689 } else
690 failed = 1;
691 }
692 }
693 }
694 }
695
696 if (failed) {
697 *cause = ROSE_OUT_OF_ORDER;
698 *diagnostic = 0;
699 } else {
700 *cause = ROSE_NOT_OBTAINABLE;
701 *diagnostic = 0;
702 }
703
704out:
705 if (!new) spin_unlock_bh(&rose_node_list_lock);
706
707 return res;
708}
709
710
711
712
713int rose_rt_ioctl(unsigned int cmd, void __user *arg)
714{
715 struct rose_route_struct rose_route;
716 struct net_device *dev;
717 int err;