xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/mroute6.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI__LINUX_MROUTE6_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI__LINUX_MROUTE6_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/const.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/sockios.h>
12*8d67ca89SAndroid Build Coastguard Worker #include <linux/in6.h>
13*8d67ca89SAndroid Build Coastguard Worker #define MRT6_BASE 200
14*8d67ca89SAndroid Build Coastguard Worker #define MRT6_INIT (MRT6_BASE)
15*8d67ca89SAndroid Build Coastguard Worker #define MRT6_DONE (MRT6_BASE + 1)
16*8d67ca89SAndroid Build Coastguard Worker #define MRT6_ADD_MIF (MRT6_BASE + 2)
17*8d67ca89SAndroid Build Coastguard Worker #define MRT6_DEL_MIF (MRT6_BASE + 3)
18*8d67ca89SAndroid Build Coastguard Worker #define MRT6_ADD_MFC (MRT6_BASE + 4)
19*8d67ca89SAndroid Build Coastguard Worker #define MRT6_DEL_MFC (MRT6_BASE + 5)
20*8d67ca89SAndroid Build Coastguard Worker #define MRT6_VERSION (MRT6_BASE + 6)
21*8d67ca89SAndroid Build Coastguard Worker #define MRT6_ASSERT (MRT6_BASE + 7)
22*8d67ca89SAndroid Build Coastguard Worker #define MRT6_PIM (MRT6_BASE + 8)
23*8d67ca89SAndroid Build Coastguard Worker #define MRT6_TABLE (MRT6_BASE + 9)
24*8d67ca89SAndroid Build Coastguard Worker #define MRT6_ADD_MFC_PROXY (MRT6_BASE + 10)
25*8d67ca89SAndroid Build Coastguard Worker #define MRT6_DEL_MFC_PROXY (MRT6_BASE + 11)
26*8d67ca89SAndroid Build Coastguard Worker #define MRT6_FLUSH (MRT6_BASE + 12)
27*8d67ca89SAndroid Build Coastguard Worker #define MRT6_MAX (MRT6_BASE + 12)
28*8d67ca89SAndroid Build Coastguard Worker #define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE
29*8d67ca89SAndroid Build Coastguard Worker #define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE + 1)
30*8d67ca89SAndroid Build Coastguard Worker #define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
31*8d67ca89SAndroid Build Coastguard Worker #define MRT6_FLUSH_MFC 1
32*8d67ca89SAndroid Build Coastguard Worker #define MRT6_FLUSH_MFC_STATIC 2
33*8d67ca89SAndroid Build Coastguard Worker #define MRT6_FLUSH_MIFS 4
34*8d67ca89SAndroid Build Coastguard Worker #define MRT6_FLUSH_MIFS_STATIC 8
35*8d67ca89SAndroid Build Coastguard Worker #define MAXMIFS 32
36*8d67ca89SAndroid Build Coastguard Worker typedef unsigned long mifbitmap_t;
37*8d67ca89SAndroid Build Coastguard Worker typedef unsigned short mifi_t;
38*8d67ca89SAndroid Build Coastguard Worker #define ALL_MIFS ((mifi_t) (- 1))
39*8d67ca89SAndroid Build Coastguard Worker #ifndef IF_SETSIZE
40*8d67ca89SAndroid Build Coastguard Worker #define IF_SETSIZE 256
41*8d67ca89SAndroid Build Coastguard Worker #endif
42*8d67ca89SAndroid Build Coastguard Worker typedef __u32 if_mask;
43*8d67ca89SAndroid Build Coastguard Worker #define NIFBITS (sizeof(if_mask) * 8)
44*8d67ca89SAndroid Build Coastguard Worker typedef struct if_set {
45*8d67ca89SAndroid Build Coastguard Worker   if_mask ifs_bits[__KERNEL_DIV_ROUND_UP(IF_SETSIZE, NIFBITS)];
46*8d67ca89SAndroid Build Coastguard Worker } if_set;
47*8d67ca89SAndroid Build Coastguard Worker #define IF_SET(n,p) ((p)->ifs_bits[(n) / NIFBITS] |= (1 << ((n) % NIFBITS)))
48*8d67ca89SAndroid Build Coastguard Worker #define IF_CLR(n,p) ((p)->ifs_bits[(n) / NIFBITS] &= ~(1 << ((n) % NIFBITS)))
49*8d67ca89SAndroid Build Coastguard Worker #define IF_ISSET(n,p) ((p)->ifs_bits[(n) / NIFBITS] & (1 << ((n) % NIFBITS)))
50*8d67ca89SAndroid Build Coastguard Worker #define IF_COPY(f,t) bcopy(f, t, sizeof(* (f)))
51*8d67ca89SAndroid Build Coastguard Worker #define IF_ZERO(p) bzero(p, sizeof(* (p)))
52*8d67ca89SAndroid Build Coastguard Worker struct mif6ctl {
53*8d67ca89SAndroid Build Coastguard Worker   mifi_t mif6c_mifi;
54*8d67ca89SAndroid Build Coastguard Worker   unsigned char mif6c_flags;
55*8d67ca89SAndroid Build Coastguard Worker   unsigned char vifc_threshold;
56*8d67ca89SAndroid Build Coastguard Worker   __u16 mif6c_pifi;
57*8d67ca89SAndroid Build Coastguard Worker   unsigned int vifc_rate_limit;
58*8d67ca89SAndroid Build Coastguard Worker };
59*8d67ca89SAndroid Build Coastguard Worker #define MIFF_REGISTER 0x1
60*8d67ca89SAndroid Build Coastguard Worker struct mf6cctl {
61*8d67ca89SAndroid Build Coastguard Worker   struct sockaddr_in6 mf6cc_origin;
62*8d67ca89SAndroid Build Coastguard Worker   struct sockaddr_in6 mf6cc_mcastgrp;
63*8d67ca89SAndroid Build Coastguard Worker   mifi_t mf6cc_parent;
64*8d67ca89SAndroid Build Coastguard Worker   struct if_set mf6cc_ifset;
65*8d67ca89SAndroid Build Coastguard Worker };
66*8d67ca89SAndroid Build Coastguard Worker struct sioc_sg_req6 {
67*8d67ca89SAndroid Build Coastguard Worker   struct sockaddr_in6 src;
68*8d67ca89SAndroid Build Coastguard Worker   struct sockaddr_in6 grp;
69*8d67ca89SAndroid Build Coastguard Worker   unsigned long pktcnt;
70*8d67ca89SAndroid Build Coastguard Worker   unsigned long bytecnt;
71*8d67ca89SAndroid Build Coastguard Worker   unsigned long wrong_if;
72*8d67ca89SAndroid Build Coastguard Worker };
73*8d67ca89SAndroid Build Coastguard Worker struct sioc_mif_req6 {
74*8d67ca89SAndroid Build Coastguard Worker   mifi_t mifi;
75*8d67ca89SAndroid Build Coastguard Worker   unsigned long icount;
76*8d67ca89SAndroid Build Coastguard Worker   unsigned long ocount;
77*8d67ca89SAndroid Build Coastguard Worker   unsigned long ibytes;
78*8d67ca89SAndroid Build Coastguard Worker   unsigned long obytes;
79*8d67ca89SAndroid Build Coastguard Worker };
80*8d67ca89SAndroid Build Coastguard Worker struct mrt6msg {
81*8d67ca89SAndroid Build Coastguard Worker #define MRT6MSG_NOCACHE 1
82*8d67ca89SAndroid Build Coastguard Worker #define MRT6MSG_WRONGMIF 2
83*8d67ca89SAndroid Build Coastguard Worker #define MRT6MSG_WHOLEPKT 3
84*8d67ca89SAndroid Build Coastguard Worker #define MRT6MSG_WRMIFWHOLE 4
85*8d67ca89SAndroid Build Coastguard Worker   __u8 im6_mbz;
86*8d67ca89SAndroid Build Coastguard Worker   __u8 im6_msgtype;
87*8d67ca89SAndroid Build Coastguard Worker   __u16 im6_mif;
88*8d67ca89SAndroid Build Coastguard Worker   __u32 im6_pad;
89*8d67ca89SAndroid Build Coastguard Worker   struct in6_addr im6_src, im6_dst;
90*8d67ca89SAndroid Build Coastguard Worker };
91*8d67ca89SAndroid Build Coastguard Worker enum {
92*8d67ca89SAndroid Build Coastguard Worker   IP6MRA_CREPORT_UNSPEC,
93*8d67ca89SAndroid Build Coastguard Worker   IP6MRA_CREPORT_MSGTYPE,
94*8d67ca89SAndroid Build Coastguard Worker   IP6MRA_CREPORT_MIF_ID,
95*8d67ca89SAndroid Build Coastguard Worker   IP6MRA_CREPORT_SRC_ADDR,
96*8d67ca89SAndroid Build Coastguard Worker   IP6MRA_CREPORT_DST_ADDR,
97*8d67ca89SAndroid Build Coastguard Worker   IP6MRA_CREPORT_PKT,
98*8d67ca89SAndroid Build Coastguard Worker   __IP6MRA_CREPORT_MAX
99*8d67ca89SAndroid Build Coastguard Worker };
100*8d67ca89SAndroid Build Coastguard Worker #define IP6MRA_CREPORT_MAX (__IP6MRA_CREPORT_MAX - 1)
101*8d67ca89SAndroid Build Coastguard Worker #endif
102