1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _UAPI__LINUX_MROUTE_H
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI__LINUX_MROUTE_H
21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/sockios.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h>
23525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#include <linux/in.h>
24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define MRT_BASE 200
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define MRT_INIT (MRT_BASE)
26d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_DONE (MRT_BASE + 1)
27d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_ADD_VIF (MRT_BASE + 2)
28d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_DEL_VIF (MRT_BASE + 3)
29d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_ADD_MFC (MRT_BASE + 4)
30d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_DEL_MFC (MRT_BASE + 5)
31d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_VERSION (MRT_BASE + 6)
32d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_ASSERT (MRT_BASE + 7)
33d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_PIM (MRT_BASE + 8)
34d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_TABLE (MRT_BASE + 9)
35d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_ADD_MFC_PROXY (MRT_BASE + 10)
36d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_DEL_MFC_PROXY (MRT_BASE + 11)
37d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MRT_MAX (MRT_BASE + 11)
38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SIOCGETVIFCNT SIOCPROTOPRIVATE
39d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define SIOCGETSGCNT (SIOCPROTOPRIVATE + 1)
40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define MAXVIFS 32
42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef unsigned long vifbitmap_t;
43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef unsigned short vifi_t;
44d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define ALL_VIFS ((vifi_t) (- 1))
45d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define VIFM_SET(n,m) ((m) |= (1 << (n)))
46d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define VIFM_CLR(n,m) ((m) &= ~(1 << (n)))
47d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define VIFM_ISSET(n,m) ((m) & (1 << (n)))
48d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define VIFM_CLRALL(m) ((m) = 0)
49d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define VIFM_COPY(mfrom,mto) ((mto) = (mfrom))
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define VIFM_SAME(m1,m2) ((m1) == (m2))
51655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct vifctl {
52d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  vifi_t vifc_vifi;
53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char vifc_flags;
54d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char vifc_threshold;
55d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int vifc_rate_limit;
56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  union {
57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    struct in_addr vifc_lcl_addr;
58d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    int vifc_lcl_ifindex;
59d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  };
60d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr vifc_rmt_addr;
61655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
62655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIFF_TUNNEL 0x1
63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIFF_SRCRT 0x2
64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIFF_REGISTER 0x4
65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define VIFF_USE_IFINDEX 0x8
66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct mfcctl {
67d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr mfcc_origin;
68d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr mfcc_mcastgrp;
69d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  vifi_t mfcc_parent;
70d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char mfcc_ttls[MAXVIFS];
71d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int mfcc_pkt_cnt;
72d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int mfcc_byte_cnt;
73d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int mfcc_wrong_if;
74d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int mfcc_expire;
75655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
76655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sioc_sg_req {
77d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr src;
78d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr grp;
79d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long pktcnt;
80d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long bytecnt;
81d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long wrong_if;
82655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
83655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct sioc_vif_req {
84d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  vifi_t vifi;
85d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long icount;
86d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long ocount;
87d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long ibytes;
88d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long obytes;
89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct igmpmsg {
91d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 unused1, unused2;
92d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char im_msgtype;
93d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char im_mbz;
94d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char im_vif;
95d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned char unused3;
96d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in_addr im_src, im_dst;
97655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
981308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferrisenum {
991308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_UNSPEC,
1001308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_ID,
1011308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_CACHE_RES_QUEUE_LEN,
1021308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_MROUTE_REG_VIF_NUM,
1031308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_MROUTE_DO_ASSERT,
1041308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_MROUTE_DO_PIM,
1051308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_TABLE_VIFS,
1061308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  __IPMRA_TABLE_MAX
1071308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris};
1081308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define IPMRA_TABLE_MAX (__IPMRA_TABLE_MAX - 1)
1091308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferrisenum {
1101308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIF_UNSPEC,
1111308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIF,
1121308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  __IPMRA_VIF_MAX
1131308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris};
1141308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define IPMRA_VIF_MAX (__IPMRA_VIF_MAX - 1)
1151308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferrisenum {
1161308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_UNSPEC,
1171308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_IFINDEX,
1181308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_VIF_ID,
1191308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_FLAGS,
1201308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_BYTES_IN,
1211308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_BYTES_OUT,
1221308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_PACKETS_IN,
1231308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_PACKETS_OUT,
1241308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_LOCAL_ADDR,
1251308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_REMOTE_ADDR,
1261308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_VIFA_PAD,
1271308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  __IPMRA_VIFA_MAX
1281308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris};
1291308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define IPMRA_VIFA_MAX (__IPMRA_VIFA_MAX - 1)
1301308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferrisenum {
1311308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_CREPORT_UNSPEC,
1321308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_CREPORT_MSGTYPE,
1331308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_CREPORT_VIF_ID,
1341308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_CREPORT_SRC_ADDR,
1351308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_CREPORT_DST_ADDR,
1361308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  IPMRA_CREPORT_PKT,
1371308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  __IPMRA_CREPORT_MAX
1381308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris};
1391308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define IPMRA_CREPORT_MAX (__IPMRA_CREPORT_MAX - 1)
140d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define MFC_ASSERT_THRESH (3 * HZ)
141655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IGMPMSG_NOCACHE 1
142655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IGMPMSG_WRONGVIF 2
143655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IGMPMSG_WHOLEPKT 3
144655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
145