|
@@ -105,17 +105,35 @@ int vcc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
|
|
if (!error)
|
|
|
sock->state = SS_CONNECTED;
|
|
|
goto done;
|
|
|
- default:
|
|
|
+ case ATM_SETBACKEND:
|
|
|
+ case ATM_NEWBACKENDIF:
|
|
|
+ {
|
|
|
+ atm_backend_t backend;
|
|
|
+ error = get_user(backend, (atm_backend_t __user *) argp);
|
|
|
+ if (error)
|
|
|
+ goto done;
|
|
|
+ switch (backend) {
|
|
|
+ case ATM_BACKEND_PPP:
|
|
|
+ request_module("pppoatm");
|
|
|
+ break;
|
|
|
+ case ATM_BACKEND_BR2684:
|
|
|
+ request_module("br2684");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ATMMPC_CTRL:
|
|
|
+ case ATMMPC_DATA:
|
|
|
+ request_module("mpoa");
|
|
|
+ break;
|
|
|
+ case ATMARPD_CTRL:
|
|
|
+ request_module("clip");
|
|
|
+ break;
|
|
|
+ case ATMLEC_CTRL:
|
|
|
+ request_module("lec");
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (cmd == ATMMPC_CTRL || cmd == ATMMPC_DATA)
|
|
|
- request_module("mpoa");
|
|
|
- if (cmd == ATMARPD_CTRL)
|
|
|
- request_module("clip");
|
|
|
- if (cmd == ATMLEC_CTRL)
|
|
|
- request_module("lec");
|
|
|
-
|
|
|
error = -ENOIOCTLCMD;
|
|
|
|
|
|
down(&ioctl_mutex);
|