This causes checkpoint to fail if an interface actually has a multicast membership. Signed-off-by: Dan Smith <danms@xxxxxxxxxx> --- net/checkpoint_dev.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/net/checkpoint_dev.c b/net/checkpoint_dev.c index 776931b..11c6544 100644 --- a/net/checkpoint_dev.c +++ b/net/checkpoint_dev.c @@ -17,6 +17,7 @@ #include <linux/checkpoint.h> #include <linux/checkpoint_hdr.h> #include <linux/deferqueue.h> +#include <linux/igmp.h> #include <net/if_inet6.h> #include <net/ipv6.h> @@ -177,6 +178,7 @@ static int ckpt_netdev_inet4_addrs(struct in_device *indev, struct ckpt_netdev_addr *abuf) { struct in_ifaddr *addr = indev->ifa_list; + struct ip_mc_list *mcaddr; while (addr) { abuf[index].type = CKPT_NETDEV_ADDR_IPV4; @@ -190,6 +192,19 @@ static int ckpt_netdev_inet4_addrs(struct in_device *indev, return -E2BIG; } + for (mcaddr = indev->mc_list; mcaddr; mcaddr = mcaddr->next) { + if ((mcaddr->multiaddr & IGMP_LOCAL_GROUP_MASK) == IGMP_LOCAL_GROUP) + continue; + + /* TODO */ + + /* Multicast addresses are not supported, so do not + * allow checkpoint to continue if one is assigned + */ + ckpt_debug("ipv4 multicast addresses are not supported\n"); + return -EINVAL; + } + return index; } -- 1.6.2.5 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers