39#ifndef _NETINET_IGMP_VAR_H_
40#define _NETINET_IGMP_VAR_H_
91#define IGPS_VERSION_3 3
92#define IGPS_VERSION3_LEN 168
100#define IGMPCTL_STATS 1
102#define IGMP_RANDOM_DELAY(X) (random() % (X) + 1)
103#define IGMP_MAX_STATE_CHANGES 24
108#define IGMP_NOT_MEMBER 0
109#define IGMP_SILENT_MEMBER 1
110#define IGMP_REPORTING_MEMBER 2
111#define IGMP_IDLE_MEMBER 3
112#define IGMP_LAZY_MEMBER 4
113#define IGMP_SLEEPING_MEMBER 5
114#define IGMP_AWAKENING_MEMBER 6
115#define IGMP_G_QUERY_PENDING_MEMBER 7
116#define IGMP_SG_QUERY_PENDING_MEMBER 8
117#define IGMP_LEAVING_MEMBER 9
123#define IGMP_VERSION_NONE 0
124#define IGMP_VERSION_1 1
125#define IGMP_VERSION_2 2
126#define IGMP_VERSION_3 3
131#define IGMP_RV_INIT 2
135#define IGMP_QI_INIT 125
137#define IGMP_QI_MAX 255
139#define IGMP_QRI_INIT 10
140#define IGMP_QRI_MIN 1
141#define IGMP_QRI_MAX 255
143#define IGMP_URI_INIT 3
144#define IGMP_URI_MIN 0
145#define IGMP_URI_MAX 10
147#define IGMP_MAX_G_GS_PACKETS 8
148#define IGMP_MAX_STATE_CHANGE_PACKETS 8
149#define IGMP_MAX_RESPONSE_PACKETS 16
150#define IGMP_MAX_RESPONSE_BURST 4
151#define IGMP_RESPONSE_BURST_INTERVAL (PR_FASTHZ / 2)
156#define M_IGMPV2 M_PROTO1
157#define M_IGMPV3_HDR M_PROTO2
158#define M_GROUPREC M_PROTO3
159#define M_IGMP_LOOP M_PROTO4
167#define IGMP_LEADINGSPACE \
168 (sizeof(struct ip) + RAOPT_LEN + sizeof(struct igmp_report))
179#define IGIF_SILENT 0x00000001
180#define IGIF_LOOPBACK 0x00000002
188#include <sys/counter.h>
191#define IGMPSTAT_ADD(name, val) \
192 VNET_PCPUSTAT_ADD(struct igmpstat, igmpstat, name, (val))
193#define IGMPSTAT_INC(name) IGMPSTAT_ADD(name, 1)
200#define IGMP_LOCK_INIT() mtx_init(&igmp_mtx, "igmp_mtx", NULL, MTX_DEF)
201#define IGMP_LOCK_DESTROY() mtx_destroy(&igmp_mtx)
202#define IGMP_LOCK() mtx_lock(&igmp_mtx)
203#define IGMP_LOCK_ASSERT() mtx_assert(&igmp_mtx, MA_OWNED)
204#define IGMP_UNLOCK() mtx_unlock(&igmp_mtx)
205#define IGMP_UNLOCK_ASSERT() mtx_assert(&igmp_mtx, MA_NOTOWNED)
int igmp_change_state(struct in_multi *)
struct igmp_ifsoftc * igmp_domifattach(struct ifnet *)
int igmp_input(struct mbuf **, int *, int)
void igmp_domifdetach(struct ifnet *)
VNET_PCPUSTAT_DECLARE(struct igmpstat, igmpstat)
void igmp_ifdetach(struct ifnet *)
SYSCTL_DECL(_net_inet_igmp)
#define IGPS_VERSION3_LEN
CTASSERT(DXR_TRIE_BITS >=16 &&DXR_TRIE_BITS<=24)
LIST_ENTRY(igmp_ifsoftc) igi_link
uint64_t igps_rcv_badreports
uint64_t igps_rcv_v1v2_queries
uint64_t igps_rcv_ourreports
uint64_t igps_rcv_gsr_queries
uint64_t igps_rcv_badqueries
uint64_t igps_snd_reports
uint64_t igps_rcv_gen_queries
uint64_t igps_rcv_tooshort
uint64_t igps_rcv_reports
uint64_t igps_rcv_v3_queries
uint64_t igps_drop_gsr_queries
uint64_t igps_rcv_group_queries