1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef _UAPI__LINUX_MROUTE_H 20 #define _UAPI__LINUX_MROUTE_H 21 #include <linux/sockios.h> 22 #include <linux/types.h> 23 #include <linux/in.h> 24 #define MRT_BASE 200 25 #define MRT_INIT (MRT_BASE) 26 #define MRT_DONE (MRT_BASE + 1) 27 #define MRT_ADD_VIF (MRT_BASE + 2) 28 #define MRT_DEL_VIF (MRT_BASE + 3) 29 #define MRT_ADD_MFC (MRT_BASE + 4) 30 #define MRT_DEL_MFC (MRT_BASE + 5) 31 #define MRT_VERSION (MRT_BASE + 6) 32 #define MRT_ASSERT (MRT_BASE + 7) 33 #define MRT_PIM (MRT_BASE + 8) 34 #define MRT_TABLE (MRT_BASE + 9) 35 #define MRT_ADD_MFC_PROXY (MRT_BASE + 10) 36 #define MRT_DEL_MFC_PROXY (MRT_BASE + 11) 37 #define MRT_MAX (MRT_BASE + 11) 38 #define SIOCGETVIFCNT SIOCPROTOPRIVATE 39 #define SIOCGETSGCNT (SIOCPROTOPRIVATE + 1) 40 #define SIOCGETRPF (SIOCPROTOPRIVATE + 2) 41 #define MAXVIFS 32 42 typedef unsigned long vifbitmap_t; 43 typedef unsigned short vifi_t; 44 #define ALL_VIFS ((vifi_t) (- 1)) 45 #define VIFM_SET(n,m) ((m) |= (1 << (n))) 46 #define VIFM_CLR(n,m) ((m) &= ~(1 << (n))) 47 #define VIFM_ISSET(n,m) ((m) & (1 << (n))) 48 #define VIFM_CLRALL(m) ((m) = 0) 49 #define VIFM_COPY(mfrom,mto) ((mto) = (mfrom)) 50 #define VIFM_SAME(m1,m2) ((m1) == (m2)) 51 struct vifctl { 52 vifi_t vifc_vifi; 53 unsigned char vifc_flags; 54 unsigned char vifc_threshold; 55 unsigned int vifc_rate_limit; 56 union { 57 struct in_addr vifc_lcl_addr; 58 int vifc_lcl_ifindex; 59 }; 60 struct in_addr vifc_rmt_addr; 61 }; 62 #define VIFF_TUNNEL 0x1 63 #define VIFF_SRCRT 0x2 64 #define VIFF_REGISTER 0x4 65 #define VIFF_USE_IFINDEX 0x8 66 struct mfcctl { 67 struct in_addr mfcc_origin; 68 struct in_addr mfcc_mcastgrp; 69 vifi_t mfcc_parent; 70 unsigned char mfcc_ttls[MAXVIFS]; 71 unsigned int mfcc_pkt_cnt; 72 unsigned int mfcc_byte_cnt; 73 unsigned int mfcc_wrong_if; 74 int mfcc_expire; 75 }; 76 struct sioc_sg_req { 77 struct in_addr src; 78 struct in_addr grp; 79 unsigned long pktcnt; 80 unsigned long bytecnt; 81 unsigned long wrong_if; 82 }; 83 struct sioc_vif_req { 84 vifi_t vifi; 85 unsigned long icount; 86 unsigned long ocount; 87 unsigned long ibytes; 88 unsigned long obytes; 89 }; 90 struct igmpmsg { 91 __u32 unused1, unused2; 92 unsigned char im_msgtype; 93 unsigned char im_mbz; 94 unsigned char im_vif; 95 unsigned char unused3; 96 struct in_addr im_src, im_dst; 97 }; 98 enum { 99 IPMRA_TABLE_UNSPEC, 100 IPMRA_TABLE_ID, 101 IPMRA_TABLE_CACHE_RES_QUEUE_LEN, 102 IPMRA_TABLE_MROUTE_REG_VIF_NUM, 103 IPMRA_TABLE_MROUTE_DO_ASSERT, 104 IPMRA_TABLE_MROUTE_DO_PIM, 105 IPMRA_TABLE_VIFS, 106 __IPMRA_TABLE_MAX 107 }; 108 #define IPMRA_TABLE_MAX (__IPMRA_TABLE_MAX - 1) 109 enum { 110 IPMRA_VIF_UNSPEC, 111 IPMRA_VIF, 112 __IPMRA_VIF_MAX 113 }; 114 #define IPMRA_VIF_MAX (__IPMRA_VIF_MAX - 1) 115 enum { 116 IPMRA_VIFA_UNSPEC, 117 IPMRA_VIFA_IFINDEX, 118 IPMRA_VIFA_VIF_ID, 119 IPMRA_VIFA_FLAGS, 120 IPMRA_VIFA_BYTES_IN, 121 IPMRA_VIFA_BYTES_OUT, 122 IPMRA_VIFA_PACKETS_IN, 123 IPMRA_VIFA_PACKETS_OUT, 124 IPMRA_VIFA_LOCAL_ADDR, 125 IPMRA_VIFA_REMOTE_ADDR, 126 IPMRA_VIFA_PAD, 127 __IPMRA_VIFA_MAX 128 }; 129 #define IPMRA_VIFA_MAX (__IPMRA_VIFA_MAX - 1) 130 enum { 131 IPMRA_CREPORT_UNSPEC, 132 IPMRA_CREPORT_MSGTYPE, 133 IPMRA_CREPORT_VIF_ID, 134 IPMRA_CREPORT_SRC_ADDR, 135 IPMRA_CREPORT_DST_ADDR, 136 IPMRA_CREPORT_PKT, 137 __IPMRA_CREPORT_MAX 138 }; 139 #define IPMRA_CREPORT_MAX (__IPMRA_CREPORT_MAX - 1) 140 #define MFC_ASSERT_THRESH (3 * HZ) 141 #define IGMPMSG_NOCACHE 1 142 #define IGMPMSG_WRONGVIF 2 143 #define IGMPMSG_WHOLEPKT 3 144 #endif 145