xref: /openbsd/usr.sbin/npppd/pppoe/pppoe_local.h (revision 3d8817e4)
1 /* $OpenBSD: pppoe_local.h,v 1.3 2010/07/02 21:20:57 yasuoka Exp $ */
2 
3 /*-
4  * Copyright (c) 2009 Internet Initiative Japan Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  */
28 #ifndef PPPOE_LOCAL_H
29 #define PPPOE_LOCAL_H 1
30 
31 #define	BPF_CAPTURE_SIZ			32768
32 #define PPPOE_SESSION_HASH_SIZ		557
33 #define PPPOE_SESSION_BUFSIZ		2048
34 #define	PPPOED_SESSION_SHUFFLE_MARK	0x10000000
35 #define PPPOED_SHUTDOWN_TIMEOUT		5
36 
37 #ifndef PPPOE_NSESSION
38 /** PPPoE maximum number of sessions */
39 #define	PPPOE_NSESSION			10000
40 #endif
41 #define	PPPOE_NLISTENER			512
42 
43 #define pppoe_session_listen_ifname(session)				\
44 	((pppoed_listener *)slist_get(&(session)->pppoed->listener,	\
45 	    (session)->listener_index))->listen_ifname
46 #define pppoe_session_sock_ether_addr(session)				\
47 	((pppoed_listener *)slist_get(&(session)->pppoed->listener,	\
48 	    (session)->listener_index))->ether_addr
49 #define pppoe_session_sock_bpf(session)					\
50 	((pppoed_listener *)slist_get(&(session)->pppoed->listener,	\
51 	    (session)->listener_index))->bpf
52 
53 /** macro is to get the physical layer label by {@link pppoe_session} */
54 #define PPPOE_SESSION_LISTENER_LABEL(session)  				\
55 	((pppoed_listener *)slist_get(&(session)->pppoed->listener,	\
56 	(session)->listener_index))->phy_label
57 /** macro is to get the interface name by {@link pppoe_session} */
58 #define PPPOE_SESSION_LISTENER_IFNAME(session) 				\
59 	((pppoed_listener *)slist_get(&(session)->pppoed->listener,	\
60 	(session)->listener_index))->listen_ifname
61 
62 #ifndef GETSHORT
63 #define GETSHORT(s, cp) { \
64 	(s) = *(cp)++ << 8; \
65 	(s) |= *(cp)++; \
66 }
67 #endif
68 #ifndef countof
69 #define	countof(x)	(sizeof((x)) / sizeof((x)[0]))
70 #endif
71 
72 #define	IFTYPE_IS_LAN(iftype)						\
73 	((iftype) == IFT_ETHER || (iftype) == IFT_L2VLAN ||		\
74 	(iftype) == IFT_L3IPVLAN || (iftype) == IFT_L3IPXVLAN)
75 
76 
77 #endif
78