diff options
| author | Andreas Schneider <asn@samba.org> | 2014-01-22 19:09:51 +0100 |
|---|---|---|
| committer | Michael Adam <obnox@samba.org> | 2014-05-21 14:43:02 +0200 |
| commit | 54d987e1316e058dea7a01853782677eaccef641 (patch) | |
| tree | aebe5e42c00242cb9be0967ca49bcec5ad1e1199 /src | |
| parent | ae3c84b07bc57be52c3f5d706bfeb62a7fa9ebbc (diff) | |
| download | socket_wrapper-54d987e1316e058dea7a01853782677eaccef641.tar.gz socket_wrapper-54d987e1316e058dea7a01853782677eaccef641.tar.xz socket_wrapper-54d987e1316e058dea7a01853782677eaccef641.zip | |
swrap: Add IP_PKTINFO support in setsockopt.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/socket_wrapper.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index 4bca746..e1b69fa 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -119,6 +119,12 @@ enum swrap_dbglvl_e { #define discard_const_p(type, ptr) ((type *)discard_const(ptr)) #endif +#ifdef IPV6_PKTINFO +# ifndef IPV6_RECVPKTINFO +# define IPV6_RECVPKTINFO IPV6_PKTINFO +# endif /* IPV6_RECVPKTINFO */ +#endif /* IPV6_PKTINFO */ + #define SWRAP_DLIST_ADD(list,item) do { \ if (!(list)) { \ (item)->prev = NULL; \ @@ -199,6 +205,7 @@ struct socket_info int is_server; int connected; int defer_connect; + int pktinfo; char *tmp_path; @@ -2872,9 +2879,23 @@ static int swrap_setsockopt(int s, int level, int optname, switch (si->family) { case AF_INET: + if (level == IPPROTO_IP) { +#ifdef IP_PKTINFO + if (optname == IP_PKTINFO) { + si->pktinfo = AF_INET; + } +#endif /* IP_PKTINFO */ + } return 0; #ifdef HAVE_IPV6 case AF_INET6: + if (level == IPPROTO_IPV6) { +#ifdef IPV6_RECVPKTINFO + if (optname == IPV6_RECVPKTINFO) { + si->pktinfo = AF_INET6; + } +#endif /* IPV6_PKTINFO */ + } return 0; #endif default: |
