From: Andrei Vagin <ava...@virtuozzo.com>

nl_pktinfo control messages is used to  get the extended
destination group number.

Signed-off-by: Andrei Vagin <ava...@virtuozzo.com>
---
 criu/sk-queue.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/criu/sk-queue.c b/criu/sk-queue.c
index 88e47b8..8124f75 100644
--- a/criu/sk-queue.c
+++ b/criu/sk-queue.c
@@ -10,6 +10,7 @@
 #include <sys/socket.h>
 #include <sys/sendfile.h>
 #include <linux/socket.h>
+#include <linux/netlink.h>
 
 #include "common/list.h"
 #include "imgset.h"
@@ -127,6 +128,18 @@ static int dump_packet_cmsg(struct msghdr *mh, 
SkPacketEntry *pe, int flags)
                                return -1;
                        continue;
                }
+               if (ch->cmsg_level == SOL_NETLINK &&
+                   ch->cmsg_type == NETLINK_PKTINFO &&
+                   ch->cmsg_len == CMSG_LEN(sizeof(struct nl_pktinfo))) {
+                       struct nl_pktinfo *info = CMSG_DATA(ch);
+
+                       /* Groups less than 32 are returned in msg_address */
+                       if (info->group < 32)
+                               continue;
+
+                       pr_err("A sender group %d isn't supported\n", 
info->group);
+                       return -1;
+               }
                pr_err("cmsg: len %ld type %d level %d\n",
                        ch->cmsg_len, ch->cmsg_type, ch->cmsg_level);
                pr_err("Control messages in queue, not supported\n");
-- 
1.8.3.1

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to