summaryrefslogtreecommitdiffstats
path: root/sys/net/if.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2006-07-09 06:04:01 +0000
committersam <sam@FreeBSD.org>2006-07-09 06:04:01 +0000
commit2350e920372288f7ed8401d362497880b30dea50 (patch)
tree9d7fca708f49f055d33f7ea0b8387e3b17763e09 /sys/net/if.c
parentd4c884886f5a791f00d676a628a847df63fd2f4d (diff)
downloadFreeBSD-src-2350e920372288f7ed8401d362497880b30dea50.zip
FreeBSD-src-2350e920372288f7ed8401d362497880b30dea50.tar.gz
Revise network interface cloning to take an optional opaque
parameter that can specify configuration parameters: o rev cloner api's to add optional parameter block o add SIOCCREATE2 that accepts parameter data o rev vlan support to use new api (maintain old code) Reviewed by: arch@
Diffstat (limited to 'sys/net/if.c')
-rw-r--r--sys/net/if.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/net/if.c b/sys/net/if.c
index d540c95..33e26cd 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -1748,12 +1748,15 @@ ifioctl(struct socket *so, u_long cmd, caddr_t data, struct thread *td)
switch (cmd) {
case SIOCIFCREATE:
+ case SIOCIFCREATE2:
+ if ((error = suser(td)) != 0)
+ return (error);
+ return (if_clone_create(ifr->ifr_name, sizeof(ifr->ifr_name),
+ cmd == SIOCIFCREATE2 ? ifr->ifr_data : NULL));
case SIOCIFDESTROY:
if ((error = suser(td)) != 0)
return (error);
- return ((cmd == SIOCIFCREATE) ?
- if_clone_create(ifr->ifr_name, sizeof(ifr->ifr_name)) :
- if_clone_destroy(ifr->ifr_name));
+ return if_clone_destroy(ifr->ifr_name);
case SIOCIFGCLONERS:
return (if_clone_list((struct if_clonereq *)data));
OpenPOWER on IntegriCloud