14ab7403bSDmitry Chagin /*- 24ab7403bSDmitry Chagin * Copyright (c) 2015 Dmitry Chagin 34ab7403bSDmitry Chagin * All rights reserved. 44ab7403bSDmitry Chagin * 54ab7403bSDmitry Chagin * Redistribution and use in source and binary forms, with or without 64ab7403bSDmitry Chagin * modification, are permitted provided that the following conditions 74ab7403bSDmitry Chagin * are met: 84ab7403bSDmitry Chagin * 1. Redistributions of source code must retain the above copyright 94ab7403bSDmitry Chagin * notice, this list of conditions and the following disclaimer. 104ab7403bSDmitry Chagin * 2. Redistributions in binary form must reproduce the above copyright 114ab7403bSDmitry Chagin * notice, this list of conditions and the following disclaimer in the 124ab7403bSDmitry Chagin * documentation and/or other materials provided with the distribution. 134ab7403bSDmitry Chagin * 144ab7403bSDmitry Chagin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 154ab7403bSDmitry Chagin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 164ab7403bSDmitry Chagin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 174ab7403bSDmitry Chagin * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 184ab7403bSDmitry Chagin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 194ab7403bSDmitry Chagin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 204ab7403bSDmitry Chagin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 214ab7403bSDmitry Chagin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 224ab7403bSDmitry Chagin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 234ab7403bSDmitry Chagin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 244ab7403bSDmitry Chagin * SUCH DAMAGE. 254ab7403bSDmitry Chagin * 264ab7403bSDmitry Chagin * $FreeBSD$ 274ab7403bSDmitry Chagin */ 284ab7403bSDmitry Chagin 294ab7403bSDmitry Chagin #ifndef _LINUX_MI_H_ 304ab7403bSDmitry Chagin #define _LINUX_MI_H_ 314ab7403bSDmitry Chagin 32d151344dSDmitry Chagin #define LINUX_IFHWADDRLEN 6 33d151344dSDmitry Chagin #define LINUX_IFNAMSIZ 16 34d151344dSDmitry Chagin 35d151344dSDmitry Chagin /* 36d151344dSDmitry Chagin * Criteria for interface name translation 37d151344dSDmitry Chagin */ 38d151344dSDmitry Chagin #define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER) 39d151344dSDmitry Chagin #define IFP_IS_LOOP(ifp) (ifp->if_type == IFT_LOOP) 40d151344dSDmitry Chagin 41d151344dSDmitry Chagin struct l_sockaddr { 42d151344dSDmitry Chagin unsigned short sa_family; 43d151344dSDmitry Chagin char sa_data[14]; 44d151344dSDmitry Chagin }; 45d151344dSDmitry Chagin 46d151344dSDmitry Chagin #define LINUX_ARPHRD_ETHER 1 47d151344dSDmitry Chagin #define LINUX_ARPHRD_LOOPBACK 772 48d151344dSDmitry Chagin 49bbac65c7SDmitry Chagin /* 50d5368bf3SDmitry Chagin * Supported address families 51d5368bf3SDmitry Chagin */ 52d5368bf3SDmitry Chagin #define LINUX_AF_UNSPEC 0 53d5368bf3SDmitry Chagin #define LINUX_AF_UNIX 1 54d5368bf3SDmitry Chagin #define LINUX_AF_INET 2 55d5368bf3SDmitry Chagin #define LINUX_AF_AX25 3 56d5368bf3SDmitry Chagin #define LINUX_AF_IPX 4 57d5368bf3SDmitry Chagin #define LINUX_AF_APPLETALK 5 58d5368bf3SDmitry Chagin #define LINUX_AF_INET6 10 59d5368bf3SDmitry Chagin 60d5368bf3SDmitry Chagin /* 61bbac65c7SDmitry Chagin * net device flags 62bbac65c7SDmitry Chagin */ 63bbac65c7SDmitry Chagin #define LINUX_IFF_UP 0x0001 64bbac65c7SDmitry Chagin #define LINUX_IFF_BROADCAST 0x0002 65bbac65c7SDmitry Chagin #define LINUX_IFF_DEBUG 0x0004 66bbac65c7SDmitry Chagin #define LINUX_IFF_LOOPBACK 0x0008 67bbac65c7SDmitry Chagin #define LINUX_IFF_POINTOPOINT 0x0010 68bbac65c7SDmitry Chagin #define LINUX_IFF_NOTRAILERS 0x0020 69bbac65c7SDmitry Chagin #define LINUX_IFF_RUNNING 0x0040 70bbac65c7SDmitry Chagin #define LINUX_IFF_NOARP 0x0080 71bbac65c7SDmitry Chagin #define LINUX_IFF_PROMISC 0x0100 72bbac65c7SDmitry Chagin #define LINUX_IFF_ALLMULTI 0x0200 73bbac65c7SDmitry Chagin #define LINUX_IFF_MASTER 0x0400 74bbac65c7SDmitry Chagin #define LINUX_IFF_SLAVE 0x0800 75bbac65c7SDmitry Chagin #define LINUX_IFF_MULTICAST 0x1000 76bbac65c7SDmitry Chagin #define LINUX_IFF_PORTSEL 0x2000 77bbac65c7SDmitry Chagin #define LINUX_IFF_AUTOMEDIA 0x4000 78bbac65c7SDmitry Chagin #define LINUX_IFF_DYNAMIC 0x8000 79bbac65c7SDmitry Chagin 804ab7403bSDmitry Chagin /* sigaltstack */ 814ab7403bSDmitry Chagin #define LINUX_SS_ONSTACK 1 824ab7403bSDmitry Chagin #define LINUX_SS_DISABLE 2 834ab7403bSDmitry Chagin 844ab7403bSDmitry Chagin int linux_to_bsd_sigaltstack(int lsa); 854ab7403bSDmitry Chagin int bsd_to_linux_sigaltstack(int bsa); 864ab7403bSDmitry Chagin 874ab7403bSDmitry Chagin /* sigset */ 884ab7403bSDmitry Chagin typedef struct { 894ab7403bSDmitry Chagin uint64_t __mask; 904ab7403bSDmitry Chagin } l_sigset_t; 914ab7403bSDmitry Chagin 924ab7403bSDmitry Chagin /* primitives to manipulate sigset_t */ 934ab7403bSDmitry Chagin #define LINUX_SIGEMPTYSET(set) (set).__mask = 0 944ab7403bSDmitry Chagin #define LINUX_SIGISMEMBER(set, sig) (1UL & ((set).__mask >> _SIG_IDX(sig))) 954ab7403bSDmitry Chagin #define LINUX_SIGADDSET(set, sig) (set).__mask |= 1UL << _SIG_IDX(sig) 964ab7403bSDmitry Chagin 974ab7403bSDmitry Chagin void linux_to_bsd_sigset(l_sigset_t *, sigset_t *); 984ab7403bSDmitry Chagin void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); 994ab7403bSDmitry Chagin 1004ab7403bSDmitry Chagin /* signaling */ 1014ab7403bSDmitry Chagin #define LINUX_SIGHUP 1 1024ab7403bSDmitry Chagin #define LINUX_SIGINT 2 1034ab7403bSDmitry Chagin #define LINUX_SIGQUIT 3 1044ab7403bSDmitry Chagin #define LINUX_SIGILL 4 1054ab7403bSDmitry Chagin #define LINUX_SIGTRAP 5 1064ab7403bSDmitry Chagin #define LINUX_SIGABRT 6 1074ab7403bSDmitry Chagin #define LINUX_SIGIOT LINUX_SIGABRT 1084ab7403bSDmitry Chagin #define LINUX_SIGBUS 7 1094ab7403bSDmitry Chagin #define LINUX_SIGFPE 8 1104ab7403bSDmitry Chagin #define LINUX_SIGKILL 9 1114ab7403bSDmitry Chagin #define LINUX_SIGUSR1 10 1124ab7403bSDmitry Chagin #define LINUX_SIGSEGV 11 1134ab7403bSDmitry Chagin #define LINUX_SIGUSR2 12 1144ab7403bSDmitry Chagin #define LINUX_SIGPIPE 13 1154ab7403bSDmitry Chagin #define LINUX_SIGALRM 14 1164ab7403bSDmitry Chagin #define LINUX_SIGTERM 15 1174ab7403bSDmitry Chagin #define LINUX_SIGSTKFLT 16 1184ab7403bSDmitry Chagin #define LINUX_SIGCHLD 17 1194ab7403bSDmitry Chagin #define LINUX_SIGCONT 18 1204ab7403bSDmitry Chagin #define LINUX_SIGSTOP 19 1214ab7403bSDmitry Chagin #define LINUX_SIGTSTP 20 1224ab7403bSDmitry Chagin #define LINUX_SIGTTIN 21 1234ab7403bSDmitry Chagin #define LINUX_SIGTTOU 22 1244ab7403bSDmitry Chagin #define LINUX_SIGURG 23 1254ab7403bSDmitry Chagin #define LINUX_SIGXCPU 24 1264ab7403bSDmitry Chagin #define LINUX_SIGXFSZ 25 1274ab7403bSDmitry Chagin #define LINUX_SIGVTALRM 26 1284ab7403bSDmitry Chagin #define LINUX_SIGPROF 27 1294ab7403bSDmitry Chagin #define LINUX_SIGWINCH 28 1304ab7403bSDmitry Chagin #define LINUX_SIGIO 29 1314ab7403bSDmitry Chagin #define LINUX_SIGPOLL LINUX_SIGIO 1324ab7403bSDmitry Chagin #define LINUX_SIGPWR 30 1334ab7403bSDmitry Chagin #define LINUX_SIGSYS 31 1344ab7403bSDmitry Chagin #define LINUX_SIGTBLSZ 31 1354ab7403bSDmitry Chagin #define LINUX_SIGRTMIN 32 1364ab7403bSDmitry Chagin #define LINUX_SIGRTMAX 64 1374ab7403bSDmitry Chagin 1384ab7403bSDmitry Chagin #define LINUX_SIG_VALID(sig) ((sig) <= LINUX_SIGRTMAX && (sig) > 0) 1394ab7403bSDmitry Chagin 1404ab7403bSDmitry Chagin int linux_to_bsd_signal(int sig); 1414ab7403bSDmitry Chagin int bsd_to_linux_signal(int sig); 1424ab7403bSDmitry Chagin 143b9d3556aSYuri Pankov extern LIST_HEAD(futex_list, futex) futex_list; 144a161fba9SYuri Pankov extern struct mtx futex_mtx; 145b9d3556aSYuri Pankov 1464ab7403bSDmitry Chagin #endif /* _LINUX_MI_H_ */ 147