1 /* $NetBSD: if_sppp.h,v 1.28 2015/09/06 06:01:01 dholland Exp $ */ 2 3 /*- 4 * Copyright (c) 2002 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Martin Husemann <martin@NetBSD.org>. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #ifndef _NET_IF_SPPP_H_ 33 #define _NET_IF_SPPP_H_ 34 35 /* ioctls used by the if_spppsubr.c driver */ 36 37 #include <sys/ioccom.h> 38 39 40 #define SPPP_AUTHPROTO_NONE 0 41 #define SPPP_AUTHPROTO_PAP 1 42 #define SPPP_AUTHPROTO_CHAP 2 43 44 #define SPPP_AUTHFLAG_NOCALLOUT 1 /* do not require authentication on */ 45 /* callouts */ 46 #define SPPP_AUTHFLAG_NORECHALLENGE 2 /* do not re-challenge CHAP */ 47 48 struct spppauthcfg { 49 char ifname[IFNAMSIZ]; /* pppoe interface name */ 50 u_int hisauth; /* one of SPPP_AUTHPROTO_* above */ 51 u_int myauth; /* one of SPPP_AUTHPROTO_* above */ 52 u_int myname_length; /* includes terminating 0 */ 53 u_int mysecret_length; /* includes terminating 0 */ 54 u_int hisname_length; /* includes terminating 0 */ 55 u_int hissecret_length; /* includes terminating 0 */ 56 u_int myauthflags; 57 u_int hisauthflags; 58 char *myname; 59 char *mysecret; 60 char *hisname; 61 char *hissecret; 62 }; 63 64 #define SPPPGETAUTHCFG _IOWR('i', 120, struct spppauthcfg) 65 #define SPPPSETAUTHCFG _IOW('i', 121, struct spppauthcfg) 66 67 struct sppplcpcfg { 68 char ifname[IFNAMSIZ]; /* pppoe interface name */ 69 int lcp_timeout; /* LCP timeout, in ticks */ 70 }; 71 72 #define SPPPGETLCPCFG _IOWR('i', 122, struct sppplcpcfg) 73 #define SPPPSETLCPCFG _IOW('i', 123, struct sppplcpcfg) 74 75 /* 76 * Don't change the order of this. Ordering the phases this way allows 77 * for a comparision of ``pp_phase >= PHASE_AUTHENTICATE'' in order to 78 * know whether LCP is up. 79 */ 80 #define SPPP_PHASE_DEAD 0 81 #define SPPP_PHASE_ESTABLISH 1 82 #define SPPP_PHASE_TERMINATE 2 83 #define SPPP_PHASE_AUTHENTICATE 3 84 #define SPPP_PHASE_NETWORK 4 85 86 struct spppstatus { 87 char ifname[IFNAMSIZ]; /* pppoe interface name */ 88 int phase; /* one of SPPP_PHASE_* above */ 89 }; 90 91 #define SPPPGETSTATUS _IOWR('i', 124, struct spppstatus) 92 93 struct spppstatusncp { 94 char ifname[IFNAMSIZ]; /* pppoe interface name */ 95 int phase; /* one of SPPP_PHASE_* above */ 96 int ncpup; /* != 0 if at least on NCP is up */ 97 }; 98 99 #define SPPPGETSTATUSNCP _IOWR('i', 134, struct spppstatusncp) 100 101 struct spppidletimeout { 102 char ifname[IFNAMSIZ]; /* pppoe interface name */ 103 time_t idle_seconds; /* number of seconds idle before 104 * disconnect, 0 to disable idle-timeout */ 105 }; 106 107 struct spppidletimeout50 { 108 char ifname[IFNAMSIZ]; /* pppoe interface name */ 109 uint32_t idle_seconds; /* number of seconds idle before 110 * disconnect, 0 to disable idle-timeout */ 111 }; 112 113 #define SPPPGETIDLETO _IOWR('i', 125, struct spppidletimeout) 114 #define SPPPSETIDLETO _IOW('i', 126, struct spppidletimeout) 115 #define __SPPPGETIDLETO50 _IOWR('i', 125, struct spppidletimeout50) 116 #define __SPPPSETIDLETO50 _IOW('i', 126, struct spppidletimeout50) 117 118 struct spppauthfailurestats { 119 char ifname[IFNAMSIZ]; /* pppoe interface name */ 120 int auth_failures; /* number of LCP failures since last successful TLU */ 121 int max_failures; /* max. allowed authorization failures */ 122 }; 123 124 #define SPPPGETAUTHFAILURES _IOWR('i', 127, struct spppauthfailurestats) 125 126 struct spppauthfailuresettings { 127 char ifname[IFNAMSIZ]; /* pppoe interface name */ 128 int max_failures; /* max. allowed authorization failures */ 129 }; 130 #define SPPPSETAUTHFAILURE _IOW('i', 128, struct spppauthfailuresettings) 131 132 /* set the DNS options we would like to query during PPP negotiation */ 133 struct spppdnssettings { 134 char ifname[IFNAMSIZ]; /* pppoe interface name */ 135 int query_dns; /* bitmask (bits 0 and 1) for DNS options to query in IPCP */ 136 }; 137 #define SPPPSETDNSOPTS _IOW('i', 129, struct spppdnssettings) 138 #define SPPPGETDNSOPTS _IOWR('i', 130, struct spppdnssettings) 139 140 /* get the DNS addresses we received from the peer */ 141 struct spppdnsaddrs { 142 char ifname[IFNAMSIZ]; /* pppoe interface name */ 143 uint32_t dns[2]; /* IP addresses */ 144 }; 145 146 #define SPPPGETDNSADDRS _IOWR('i', 131, struct spppdnsaddrs) 147 148 /* set LCP keepalive/timeout options */ 149 struct spppkeepalivesettings { 150 char ifname[IFNAMSIZ]; /* pppoe interface name */ 151 u_int maxalive; /* number of LCP echo req. w/o reply */ 152 time_t max_noreceive; /* (sec.) grace period before we start 153 sending LCP echo requests. */ 154 }; 155 struct spppkeepalivesettings50 { 156 char ifname[IFNAMSIZ]; /* pppoe interface name */ 157 u_int maxalive; /* number of LCP echo req. w/o reply */ 158 uint32_t max_noreceive; /* (sec.) grace period before we start 159 sending LCP echo requests. */ 160 }; 161 #define SPPPSETKEEPALIVE _IOW('i', 132, struct spppkeepalivesettings) 162 #define SPPPGETKEEPALIVE _IOWR('i', 133, struct spppkeepalivesettings) 163 #define __SPPPSETKEEPALIVE50 _IOW('i', 132, struct spppkeepalivesettings50) 164 #define __SPPPGETKEEPALIVE50 _IOWR('i', 133, struct spppkeepalivesettings50) 165 166 /* 134 already used! */ 167 168 #endif /* !_NET_IF_SPPP_H_ */ 169 170