swrap: Add swrap_sendmsg_filter_cmsg_socket().
authorAndreas Schneider <asn@samba.org>
Tue, 3 Jun 2014 13:04:18 +0000 (15:04 +0200)
committerMichael Adam <obnox@samba.org>
Thu, 5 Jun 2014 21:57:10 +0000 (23:57 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
lib/socket_wrapper/socket_wrapper.c

index 5212cadd3568a1b075b2533c0543e1a201363b7e..8cb924e282a09fe6289ab9de3947d7bc5f5dfc5d 100644 (file)
@@ -3157,6 +3157,9 @@ static int swrap_msghdr_add_socket_info(struct socket_info *si,
 static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg,
                                   uint8_t *cm_data,
                                   size_t *cm_data_space);
+static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg,
+                                           uint8_t *cm_data,
+                                           size_t *cm_data_space);
 
 static int swrap_sendmsg_filter_cmsghdr(struct msghdr *msg,
                                        uint8_t *cm_data,
@@ -3174,7 +3177,9 @@ static int swrap_sendmsg_filter_cmsghdr(struct msghdr *msg,
             cmsg = CMSG_NXTHDR(msg, cmsg)) {
                switch (cmsg->cmsg_level) {
                case IPPROTO_IP:
-                       /* TODO swrap_sendmsg_filter_cmsg_socket */
+                       rc = swrap_sendmsg_filter_cmsg_socket(cmsg,
+                                                             cm_data,
+                                                             cm_data_space);
                        break;
                default:
                        rc = swrap_sendmsg_copy_cmsg(cmsg,
@@ -3211,6 +3216,35 @@ static int swrap_sendmsg_copy_cmsg(struct cmsghdr *cmsg,
 
        return 0;
 }
+
+static int swrap_sendmsg_filter_cmsg_socket(struct cmsghdr *cmsg,
+                                           uint8_t *cm_data,
+                                           size_t *cm_data_space)
+{
+       int rc = -1;
+
+       switch(cmsg->cmsg_type) {
+#ifdef IP_PKTINFO
+       case IP_PKTINFO:
+               /* TODO swrap_msghdr_filter_cmsg_pktinfo */
+               break;
+#endif
+#ifdef IPV6_PKTINFO
+       case IPV6_PKTINFO:
+               /* TODO swrap_msghdr_filter_cmsg_pktinfo */
+               break;
+#endif
+#ifdef IP_RECVDSTADDR
+       case IP_RECVDSTADDR:
+               /* TODO swrap_msghdr_filter_cmsg_pktinfo */
+               break;
+#endif
+       default:
+               break;
+       }
+
+       return rc;
+}
 #endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */
 
 static ssize_t swrap_sendmsg_before(int fd,