diff options
author | Andreas Schneider <asn@samba.org> | 2014-05-23 15:44:23 +0200 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2014-05-26 16:45:16 +0200 |
commit | 69f22c94b4ad061263c40c8c271a86f444cee72d (patch) | |
tree | d76637a1c0a11a6bddf9a56082b5737f32ed4074 /src/socket_wrapper.c | |
parent | 63c59be9ace8282ed19b15fa9d66c7448c1bdd97 (diff) | |
download | socket_wrapper-69f22c94b4ad061263c40c8c271a86f444cee72d.tar.gz socket_wrapper-69f22c94b4ad061263c40c8c271a86f444cee72d.tar.xz socket_wrapper-69f22c94b4ad061263c40c8c271a86f444cee72d.zip |
swrap: Add swrap_sendmsg_filter_cmsg_socket().
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'src/socket_wrapper.c')
-rw-r--r-- | src/socket_wrapper.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index 5212cad..8cb924e 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -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, |