]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for some more tun/tap ioctls. BZ#315952.
authorTom Hughes <tom@compton.nu>
Tue, 2 Sep 2014 12:54:29 +0000 (12:54 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 2 Sep 2014 12:54:29 +0000 (12:54 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14432

coregrind/m_syswrap/syswrap-linux.c
include/vki/vki-linux.h

index 7139a690f580945d1d000d820a2c5a6f983d4acb..3b3218d518a52465dcbaf25672296eecbdf19f78 100644 (file)
@@ -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:
index f32573940ecd055ff063651db9f629c1e27b0efd..e00960c50cb6460335b3663a1bcf9e7169f575f6 100644 (file)
@@ -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