Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
IGMP: proxy device
[vpp.git]
/
src
/
plugins
/
igmp
/
igmp_report.c
diff --git
a/src/plugins/igmp/igmp_report.c
b/src/plugins/igmp/igmp_report.c
index
ae8a933
..
7c08f34
100644
(file)
--- a/
src/plugins/igmp/igmp_report.c
+++ b/
src/plugins/igmp/igmp_report.c
@@
-32,15
+32,21
@@
igmp_group_mk_source_list (const igmp_membership_group_v3_t * r)
n = clib_net_to_host_u16 (r->n_src_addresses);
if (0 == n)
n = clib_net_to_host_u16 (r->n_src_addresses);
if (0 == n)
- return (NULL);
-
- vec_validate (srcs, n - 1);
- s = r->src_addresses;
-
- for (ii = 0; ii < n; ii++)
{
{
- srcs[ii].ip4 = *s;
- s++;
+ /* a (*,G) join has no source address specified */
+ vec_validate (srcs, 0);
+ srcs[0].ip4.as_u32 = 0;
+ }
+ else
+ {
+ vec_validate (srcs, n - 1);
+ s = r->src_addresses;
+
+ for (ii = 0; ii < n; ii++)
+ {
+ srcs[ii].ip4 = *s;
+ s++;
+ }
}
return (srcs);
}
return (srcs);
@@
-190,6
+196,8
@@
igmp_handle_report (const igmp_report_args_t * args)
igmp_group = group_cptr (igmp_group,
igmp_membership_group_v3_length (igmp_group));
}
igmp_group = group_cptr (igmp_group,
igmp_membership_group_v3_length (igmp_group));
}
+
+ igmp_proxy_device_merge_config (config, 0);
}
/*
}
/*