28 #define _(n,f) case IGMP_TYPE_##f: return (format (s, "%s", #f)); 32 return format (s,
"unknown:%d", type);
42 #define _(n,f) case IGMP_MEMBERSHIP_GROUP_##f: return (format (s, "%s", #f)); 46 return (
format (s,
"unknown:%d", type));
56 #define _(n,f) case IGMP_FILTER_MODE_##f: return (format (s, "%s", #f)); 60 return (
format (s,
"unknown:%d", mode));
71 #define _(n,f) case IGMP_MODE_##f: return (format (s, "%s", #f)); 75 return (
format (s,
"unknown:%d", mode));
83 u32 max_header_bytes = va_arg (*args,
u32);
86 if (max_header_bytes <
sizeof (hdr[0]))
87 return format (s,
"IGMP header truncated");
95 clib_net_to_host_u16 (hdr->
checksum));
104 u32 max_header_bytes = va_arg (*args,
u32);
110 if (max_header_bytes <
sizeof (igmp[0]))
111 return format (s,
"IGMP report truncated");
118 clib_net_to_host_u16 (igmp->
n_groups));
121 for (i = 0; i < clib_net_to_host_u16 (igmp->
n_groups); i++)
150 u32 max_header_bytes = va_arg (*args,
u32);
154 if (max_header_bytes <
sizeof (igmp[0]))
155 return format (s,
"IGMP query truncated");
172 format (s,
"%UGroup-and-Source-Specific Query: %U",
188 ip46_address_t *ss, *srcs;
190 srcs = va_arg (*args, ip46_address_t *);
215 u32 id = va_arg (*args,
u32);
217 s = (
id == ~0) ? s :
format (s,
"proxy device: %u",
id);
igmp_membership_group_v3_type_t type
ip4_address_t src_addresses[0]
igmp_membership_group_v3_type_t
description fragment has unexpected format
vl_api_fib_path_type_t type
vl_api_tunnel_mode_t mode
format_function_t format_ip46_address
int ip4_address_compare(ip4_address_t *a1, ip4_address_t *a2)
sll srl srl sll sra u16x4 i
enum igmp_filter_mode_t_ igmp_filter_mode_t
ip4_address_t group_address
ip46_address_t igmp_key_t
IGMP Key Used to index groups within an interface config and sources within a list.
enum igmp_mode_t_ igmp_mode_t
ip4_address_t src_addresses[0]
#define vec_foreach(var, vec)
Vector iterator.
#define group_ptr(p, l)
helper macro to get igmp membership group from pointer plus offset
ip4_address_t group_address