From: Tom Hughes Date: Tue, 2 Sep 2014 12:54:29 +0000 (+0000) Subject: Add support for some more tun/tap ioctls. BZ#315952. X-Git-Tag: svn/VALGRIND_3_10_0~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=612c18619db4d2fb9bb6ccd44998013d1e42488d;p=thirdparty%2Fvalgrind.git Add support for some more tun/tap ioctls. BZ#315952. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14432 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 7139a690f5..3b3218d518 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -5893,20 +5893,49 @@ PRE(sys_ioctl) break; /* tun/tap related ioctls */ + case VKI_TUNSETNOCSUM: + case VKI_TUNSETDEBUG: + break; case VKI_TUNSETIFF: PRE_MEM_RASCIIZ( "ioctl(TUNSETIFF)", (Addr)((struct vki_ifreq *)ARG3)->vki_ifr_name ); PRE_MEM_READ( "ioctl(TUNSETIFF)", (Addr)&((struct vki_ifreq *)ARG3)->vki_ifr_flags, sizeof(((struct vki_ifreq *)ARG3)->vki_ifr_flags) ); - PRE_MEM_WRITE( "ioctl(TUNSETIFF)", ARG3, - sizeof(struct vki_ifreq)); + PRE_MEM_WRITE( "ioctl(TUNSETIFF)", ARG3, sizeof(struct vki_ifreq) ); + break; + case VKI_TUNSETPERSIST: + case VKI_TUNSETOWNER: + case VKI_TUNSETLINK: + case VKI_TUNSETGROUP: + break; + case VKI_TUNGETFEATURES: + PRE_MEM_WRITE( "ioctl(TUNGETFEATURES)", ARG3, sizeof(unsigned int) ); break; case VKI_TUNSETOFFLOAD: - break; + break; case VKI_TUNGETIFF: - PRE_MEM_WRITE( "ioctl(TUNGETIFF)", ARG3, - sizeof(struct vki_ifreq)); + PRE_MEM_WRITE( "ioctl(TUNGETIFF)", ARG3, sizeof(struct vki_ifreq) ); + break; + case VKI_TUNGETSNDBUF: + PRE_MEM_WRITE( "ioctl(TUNGETSNDBUF)", ARG3, sizeof(int) ); + break; + case VKI_TUNSETSNDBUF: + PRE_MEM_READ( "ioctl(TUNSETSNDBUF)", ARG3, sizeof(int) ); + break; + case VKI_TUNGETVNETHDRSZ: + PRE_MEM_WRITE( "ioctl(TUNGETVNETHDRSZ)", ARG3, sizeof(int) ); + break; + case VKI_TUNSETVNETHDRSZ: + PRE_MEM_READ( "ioctl(TUNSETVNETHDRSZ)", ARG3, sizeof(int) ); + break; + case VKI_TUNSETQUEUE: + PRE_MEM_READ( "ioctl(TUNSETQUEUE)", + (Addr)&((struct vki_ifreq *)ARG3)->vki_ifr_flags, + sizeof(((struct vki_ifreq *)ARG3)->vki_ifr_flags) ); + break; + case VKI_TUNSETIFINDEX: + PRE_MEM_READ( "ioctl(TUNSETIFINDEX)", ARG3, sizeof(unsigned int)); break; /* RARP cache control calls. */ @@ -7472,12 +7501,21 @@ POST(sys_ioctl) POST_MEM_WRITE( (Addr)&((struct vki_ifreq *)ARG3)->vki_ifr_name, sizeof(((struct vki_ifreq *)ARG3)->vki_ifr_name) ); break; + case VKI_TUNGETFEATURES: + POST_MEM_WRITE( ARG3, sizeof(unsigned int) ); + break; case VKI_TUNGETIFF: POST_MEM_WRITE( (Addr)&((struct vki_ifreq *)ARG3)->vki_ifr_name, sizeof(((struct vki_ifreq *)ARG3)->vki_ifr_name) ); POST_MEM_WRITE( (Addr)&((struct vki_ifreq *)ARG3)->vki_ifr_flags, sizeof(((struct vki_ifreq *)ARG3)->vki_ifr_flags) ); break; + case VKI_TUNGETSNDBUF: + POST_MEM_WRITE( ARG3, sizeof(int) ); + break; + case VKI_TUNGETVNETHDRSZ: + POST_MEM_WRITE( ARG3, sizeof(int) ); + break; case VKI_SIOCGIFCONF: /* get iface list */ /* WAS: diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h index f32573940e..e00960c50c 100644 --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h @@ -3181,6 +3181,8 @@ struct vki_hwtstamp_config { #define VKI_TUNGETVNETHDRSZ _VKI_IOR('T', 215, int) #define VKI_TUNSETVNETHDRSZ _VKI_IOW('T', 216, int) #define VKI_TUNSETQUEUE _VKI_IOW('T', 217, int) +#define VKI_TUNSETIFINDEX _VKI_IOW('T', 218, unsigned int) +//#define VKI_TUNGETFILTER _VKI_IOR('T', 219, struct sock_fprog) //---------------------------------------------------------------------- // From linux-3.8/include/uapi/linux/vhost.h