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