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