tap_component.c revision 1.4.14.2 1 1.4.14.2 jdolecek /* $NetBSD: tap_component.c,v 1.4.14.2 2017/12/03 11:39:19 jdolecek Exp $ */
2 1.4.14.2 jdolecek
3 1.4.14.2 jdolecek /*
4 1.4.14.2 jdolecek * Copyright (c) 2015 Wei Liu. All Rights Reserved.
5 1.4.14.2 jdolecek *
6 1.4.14.2 jdolecek * Redistribution and use in source and binary forms, with or without
7 1.4.14.2 jdolecek * modification, are permitted provided that the following conditions
8 1.4.14.2 jdolecek * are met:
9 1.4.14.2 jdolecek * 1. Redistributions of source code must retain the above copyright
10 1.4.14.2 jdolecek * notice, this list of conditions and the following disclaimer.
11 1.4.14.2 jdolecek * 2. Redistributions in binary form must reproduce the above copyright
12 1.4.14.2 jdolecek * notice, this list of conditions and the following disclaimer in the
13 1.4.14.2 jdolecek * documentation and/or other materials provided with the distribution.
14 1.4.14.2 jdolecek *
15 1.4.14.2 jdolecek * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
16 1.4.14.2 jdolecek * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 1.4.14.2 jdolecek * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 1.4.14.2 jdolecek * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 1.4.14.2 jdolecek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 1.4.14.2 jdolecek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 1.4.14.2 jdolecek * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 1.4.14.2 jdolecek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 1.4.14.2 jdolecek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 1.4.14.2 jdolecek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 1.4.14.2 jdolecek * SUCH DAMAGE.
26 1.4.14.2 jdolecek */
27 1.4.14.2 jdolecek
28 1.4.14.2 jdolecek #include <sys/cdefs.h>
29 1.4.14.2 jdolecek __KERNEL_RCSID(0, "$NetBSD: tap_component.c,v 1.4.14.2 2017/12/03 11:39:19 jdolecek Exp $");
30 1.4.14.2 jdolecek
31 1.4.14.2 jdolecek #include <sys/param.h>
32 1.4.14.2 jdolecek #include <sys/device.h>
33 1.4.14.2 jdolecek #include <sys/stat.h>
34 1.4.14.2 jdolecek
35 1.4.14.2 jdolecek #include <rump-sys/kern.h>
36 1.4.14.2 jdolecek #include <rump-sys/vfs.h>
37 1.4.14.2 jdolecek
38 1.4.14.2 jdolecek #include "ioconf.h"
39 1.4.14.2 jdolecek
40 1.4.14.2 jdolecek RUMP_COMPONENT(RUMP_COMPONENT_NET_IF)
41 1.4.14.2 jdolecek {
42 1.4.14.2 jdolecek extern const struct cdevsw tap_cdevsw;
43 1.4.14.2 jdolecek extern devmajor_t tap_bmajor, tap_cmajor;
44 1.4.14.2 jdolecek int error;
45 1.4.14.2 jdolecek
46 1.4.14.2 jdolecek error = devsw_attach("tap", NULL, &tap_bmajor,
47 1.4.14.2 jdolecek &tap_cdevsw, &tap_cmajor);
48 1.4.14.2 jdolecek if (error != 0)
49 1.4.14.2 jdolecek panic("tap devsw attach failed: %d", error);
50 1.4.14.2 jdolecek
51 1.4.14.2 jdolecek error = rump_vfs_makeonedevnode(S_IFCHR, "/dev/tap", tap_cmajor,
52 1.4.14.2 jdolecek 0xfffff);
53 1.4.14.2 jdolecek if (error != 0)
54 1.4.14.2 jdolecek panic("cannot create tap device node: %d", error);
55 1.4.14.2 jdolecek
56 1.4.14.2 jdolecek error = rump_vfs_makedevnodes(S_IFCHR, "/dev/tap", '0', tap_cmajor,
57 1.4.14.2 jdolecek 0, 4);
58 1.4.14.2 jdolecek if (error != 0)
59 1.4.14.2 jdolecek panic("cannot create tap[0-4] device node: %d", error);
60 1.4.14.2 jdolecek
61 1.4.14.2 jdolecek devsw_detach(NULL, &tap_cdevsw);
62 1.4.14.2 jdolecek }
63