xref: /netbsd-src/sys/compat/netinet6/in6_var.h (revision b05648aa26dffce5c4d6744406ae32a9c84eef47)
1*b05648aaSroy /*	$NetBSD: in6_var.h,v 1.6 2020/06/12 11:04:45 roy Exp $	*/
2ff90a009Schristos 
3ff90a009Schristos /*-
4ff90a009Schristos  * Copyright (c) 2008 The NetBSD Foundation, Inc.
5ff90a009Schristos  * All rights reserved.
6ff90a009Schristos  *
7ff90a009Schristos  * This code is derived from software contributed to The NetBSD Foundation
8ff90a009Schristos  * by Christos Zoulas.
9ff90a009Schristos  *
10ff90a009Schristos  * Redistribution and use in source and binary forms, with or without
11ff90a009Schristos  * modification, are permitted provided that the following conditions
12ff90a009Schristos  * are met:
13ff90a009Schristos  * 1. Redistributions of source code must retain the above copyright
14ff90a009Schristos  *    notice, this list of conditions and the following disclaimer.
15ff90a009Schristos  * 2. Redistributions in binary form must reproduce the above copyright
16ff90a009Schristos  *    notice, this list of conditions and the following disclaimer in the
17ff90a009Schristos  *    documentation and/or other materials provided with the distribution.
18ff90a009Schristos  *
19ff90a009Schristos  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20ff90a009Schristos  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21ff90a009Schristos  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22ff90a009Schristos  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23ff90a009Schristos  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24ff90a009Schristos  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25ff90a009Schristos  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26ff90a009Schristos  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27ff90a009Schristos  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28ff90a009Schristos  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29ff90a009Schristos  * POSSIBILITY OF SUCH DAMAGE.
30ff90a009Schristos  */
31ff90a009Schristos #ifndef _COMPAT_NETINET6_IN6_VAR_H_
32ff90a009Schristos #define _COMPAT_NETINET6_IN6_VAR_H_
33ff90a009Schristos 
341fbab01aSdholland #include <sys/ioccom.h>
351fbab01aSdholland 
36ff90a009Schristos struct in6_addrlifetime50 {
37ff90a009Schristos 	int32_t ia6t_expire;
38ff90a009Schristos 	int32_t ia6t_preferred;
39ff90a009Schristos 	u_int32_t ia6t_vltime;
40ff90a009Schristos 	u_int32_t ia6t_pltime;
41ff90a009Schristos };
42ff90a009Schristos 
435a4537ebSchristos struct in6_aliasreq50 {
445a4537ebSchristos 	char	ifra_name[IFNAMSIZ];
455a4537ebSchristos 	struct	sockaddr_in6 ifra_addr;
465a4537ebSchristos 	struct	sockaddr_in6 ifra_dstaddr;
475a4537ebSchristos 	struct	sockaddr_in6 ifra_prefixmask;
485a4537ebSchristos 	int	ifra_flags;
495a4537ebSchristos 	struct in6_addrlifetime50 ifra_lifetime;
505a4537ebSchristos };
515a4537ebSchristos 
52*b05648aaSroy struct prf_ra {
53*b05648aaSroy 	u_int32_t onlink : 1;
54*b05648aaSroy 	u_int32_t autonomous : 1;
55*b05648aaSroy 	u_int32_t router : 1;
56*b05648aaSroy 	u_int32_t reserved : 5;
57*b05648aaSroy };
58*b05648aaSroy 
595a4537ebSchristos #define OSIOCAIFADDR_IN6	_IOW('i', 26, struct in6_aliasreq50)
605a4537ebSchristos #define OSIOCSIFPHYADDR_IN6	_IOW('i', 70, struct in6_aliasreq50)
61*b05648aaSroy #define OSIOCGDRLST_IN6		_IOWR('i', 74, struct in6_drlist)
62*b05648aaSroy #define OSIOCGPRLST_IN6		_IOWR('i', 75, struct in6_oprlist)
63*b05648aaSroy #define OSIOCGIFINFO_IN6	_IOWR('i', 76, struct in6_ondireq)
64*b05648aaSroy #define OSIOCSNDFLUSH_IN6	_IOWR('i', 77, struct in6_ifreq)
65*b05648aaSroy #define OSIOCSPFXFLUSH_IN6	_IOWR('i', 79, struct in6_ifreq)
66*b05648aaSroy #define OSIOCSRTRFLUSH_IN6	_IOWR('i', 80, struct in6_ifreq)
67*b05648aaSroy #define OSIOCGIFALIFETIME_IN6	_IOWR('i', 81, struct in6_ifreq)
68*b05648aaSroy #define OSIOCSDEFIFACE_IN6	_IOWR('i', 85, struct in6_ndifreq90)
69*b05648aaSroy #define OSIOCGDEFIFACE_IN6	_IOWR('i', 86, struct in6_ndifreq90)
70*b05648aaSroy #define OSIOCSIFINFO_FLAGS_90	_IOWR('i', 87, struct in6_ndireq90)
71*b05648aaSroy #define OSIOCGIFINFO_IN6_90	_IOWR('i', 108, struct in6_ndireq90)
72*b05648aaSroy #define OSIOCSIFINFO_IN6_90	_IOWR('i', 109, struct in6_ndireq90)
73ff90a009Schristos 
in6_addrlifetime_to_in6_addrlifetime50(struct in6_addrlifetime * al)7487fd18f8Schristos static __inline void in6_addrlifetime_to_in6_addrlifetime50(
75ff90a009Schristos     struct in6_addrlifetime *al)
76ff90a009Schristos {
77ff90a009Schristos 	struct in6_addrlifetime cp;
78ff90a009Schristos 	struct in6_addrlifetime50 *oal =
79ff90a009Schristos 	    (struct in6_addrlifetime50 *)(void *)al;
80ff90a009Schristos 	(void)memcpy(&cp, al, sizeof(cp));
81ff90a009Schristos 	oal->ia6t_expire = (int32_t)cp.ia6t_expire;
82ff90a009Schristos 	oal->ia6t_preferred = (int32_t)cp.ia6t_preferred;
83ff90a009Schristos 	oal->ia6t_vltime = cp.ia6t_vltime;
84ff90a009Schristos 	oal->ia6t_pltime = cp.ia6t_pltime;
85ff90a009Schristos }
86ff90a009Schristos 
in6_aliasreq50_to_in6_aliasreq(struct in6_aliasreq * ar)8787fd18f8Schristos static __inline void in6_aliasreq50_to_in6_aliasreq(
885a4537ebSchristos     struct in6_aliasreq *ar)
895a4537ebSchristos {
905a4537ebSchristos 	struct in6_aliasreq50 *oar =
915a4537ebSchristos 	    (struct in6_aliasreq50 *)(void *)ar;
925a4537ebSchristos 	struct in6_aliasreq50 cp;
935a4537ebSchristos 	memcpy(&cp, oar, sizeof(cp));
945a4537ebSchristos 	ar->ifra_lifetime.ia6t_expire = cp.ifra_lifetime.ia6t_expire;
955a4537ebSchristos 	ar->ifra_lifetime.ia6t_preferred = cp.ifra_lifetime.ia6t_preferred;
965a4537ebSchristos 	ar->ifra_lifetime.ia6t_vltime = cp.ifra_lifetime.ia6t_vltime;
975a4537ebSchristos 	ar->ifra_lifetime.ia6t_pltime = cp.ifra_lifetime.ia6t_pltime;
985a4537ebSchristos }
995a4537ebSchristos 
100ff90a009Schristos #endif /* _COMPAT_NETINET6_IN6_VAR_H_ */
101