39#ifndef _NETINET_IP_MROUTE_H_
40#define _NETINET_IP_MROUTE_H_
62#define MRT_ADD_VIF 102
63#define MRT_DEL_VIF 103
64#define MRT_ADD_MFC 104
65#define MRT_DEL_MFC 105
66#define MRT_VERSION 106
68#define MRT_PIM MRT_ASSERT
69#define MRT_API_SUPPORT 109
70#define MRT_API_CONFIG 110
71#define MRT_ADD_BW_UPCALL 111
72#define MRT_DEL_BW_UPCALL 112
80#define ALL_VIFS (vifi_t)-1
82#define VIFM_SET(n, m) ((m) |= (1 << (n)))
83#define VIFM_CLR(n, m) ((m) &= ~(1 << (n)))
84#define VIFM_ISSET(n, m) ((m) & (1 << (n)))
85#define VIFM_CLRALL(m) ((m) = 0x00000000)
86#define VIFM_COPY(mfrom, mto) ((mto) = (mfrom))
87#define VIFM_SAME(m1, m2) ((m1) == (m2))
104#define VIFF_TUNNEL 0x1
105#define VIFF_SRCRT 0x2
106#define VIFF_REGISTER 0x4
140#define MRT_MFC_FLAGS_DISABLE_WRONGVIF (1 << 0)
141#define MRT_MFC_FLAGS_BORDER_VIF (1 << 1)
142#define MRT_MFC_RP (1 << 8)
143#define MRT_MFC_BW_UPCALL (1 << 9)
144#define MRT_MFC_FLAGS_ALL (MRT_MFC_FLAGS_DISABLE_WRONGVIF | \
145 MRT_MFC_FLAGS_BORDER_VIF)
146#define MRT_API_FLAGS_ALL (MRT_MFC_FLAGS_ALL | \
192#define BW_UPCALL_UNIT_PACKETS (1 << 0)
193#define BW_UPCALL_UNIT_BYTES (1 << 1)
194#define BW_UPCALL_GEQ (1 << 2)
195#define BW_UPCALL_LEQ (1 << 3)
196#define BW_UPCALL_DELETE_ALL (1 << 4)
202#define BW_UPCALLS_MAX 1024
204#define BW_UPCALL_THRESHOLD_INTERVAL_MIN_SEC 3
205#define BW_UPCALL_THRESHOLD_INTERVAL_MIN_USEC 0
227#define MRTSTAT_ADD(name, val) \
228 VNET_PCPUSTAT_ADD(struct mrtstat, mrtstat, name, (val))
229#define MRTSTAT_INC(name) MRTSTAT_ADD(name, 1)
273#if defined(_KERNEL) || defined (_NETSTAT)
306#define IGMPMSG_NOCACHE 1
307#define IGMPMSG_WRONGVIF 2
308#define IGMPMSG_WHOLEPKT 3
309#define IGMPMSG_BW_UPCALL 4
338#define BW_METER_UNIT_PACKETS (1 << 0)
339#define BW_METER_UNIT_BYTES (1 << 1)
340#define BW_METER_GEQ (1 << 2)
341#define BW_METER_LEQ (1 << 3)
342#define BW_METER_USER_FLAGS (BW_METER_UNIT_PACKETS | \
343 BW_METER_UNIT_BYTES | \
347#define BW_METER_UPCALL_DELIVERED (1 << 24)
367extern int (*
mrt_ioctl)(u_long, caddr_t, int);
int(* mrt_ioctl)(u_long, caddr_t, int)
int(* ip_mrouter_done)(void)
int(* ip_mrouter_set)(struct socket *, struct sockopt *)
int(* ip_mrouter_get)(struct socket *, struct sockopt *)
struct callout bm_meter_callout
struct timeval bm_start_time
struct bw_data bm_threshold
struct bw_data bm_measured
struct bw_meter * bm_time_next
struct bw_meter * bm_mfc_next
struct bw_data bu_threshold
struct bw_data bu_measured
struct in_addr im_src im_dst
uint8_t mfc_flags[MAXVIFS]
struct timeval mfc_last_assert
struct bw_meter * mfc_bw_meter_leq
struct bw_meter * mfc_bw_meter_geq
struct in_addr mfc_mcastgrp
struct in_addr mfc_origin
struct buf_ring * mfc_stall_ring
struct in_addr mfcc_mcastgrp
struct in_addr mfcc_origin
uint8_t mfcc_flags[MAXVIFS]
u_char mfcc_ttls[MAXVIFS]
struct in_addr mfcc_mcastgrp
struct in_addr mfcc_origin
u_char mfcc_ttls[MAXVIFS]
uint64_t mrts_cache_cleanups
uint64_t mrts_mfc_lookups
uint64_t mrts_cant_tunnel
uint64_t mrts_upq_sockfull
TAILQ_ENTRY(rtdetq) rte_link
struct in_addr v_rmt_addr
struct in_addr v_lcl_addr
struct in_addr vifc_rmt_addr
struct in_addr vifc_lcl_addr