mroute.h revision 525ce914edf136d2bd02ac8c404d56c52e737f4d
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 42typedef unsigned long vifbitmap_t; 43typedef 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)) 51struct 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 66struct 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}; 76struct 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}; 83struct sioc_vif_req { 84 vifi_t vifi; 85 unsigned long icount; 86 unsigned long ocount; 87 unsigned long ibytes; 88 unsigned long obytes; 89}; 90struct 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#define MFC_ASSERT_THRESH (3 * HZ) 99#define IGMPMSG_NOCACHE 1 100#define IGMPMSG_WRONGVIF 2 101#define IGMPMSG_WHOLEPKT 3 102#endif 103