651 if (!capable(CAP_NET_ADMIN))
652 return -EPERM;
653 if (cmd == ATM_SETBACKEND)
654 return br2684_regvcc(atmvcc, argp);
655 else
656 return br2684_create(argp);
657#ifdef CONFIG_ATM_BR2684_IPFILTER
658 case BR2684_SETFILT:
659 if (atmvcc->push != br2684_push)
660 return -ENOIOCTLCMD;
661 if (!capable(CAP_NET_ADMIN))
662 return -EPERM;
663 err = br2684_setfilt(atmvcc, argp);
664
665 return err;
666#endif
667 }
668 return -ENOIOCTLCMD;
669}
670
671static struct atm_ioctl br2684_ioctl_ops = {
672 .owner = THIS_MODULE,
673 .ioctl = br2684_ioctl,
674};
675
676#ifdef CONFIG_PROC_FS
677static void *br2684_seq_start(struct seq_file *seq, loff_t * pos)
678 __acquires(devs_lock)
679{
680 read_lock(&devs_lock);
681 return seq_list_start(&br2684_devs, *pos);
682}
683
684static void *br2684_seq_next(struct seq_file *seq, void *v, loff_t * pos)
685{
686 return seq_list_next(v, &br2684_devs, pos);
687}
688
689static void br2684_seq_stop(struct seq_file *seq, void *v)
690 __releases(devs_lock)
691{