From: Christian Borntraeger Date: Fri, 1 Mar 2013 12:56:07 +0000 (+0000) Subject: initial tun/tap ioctls. X-Git-Tag: svn/VALGRIND_3_9_0~384 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85a473786947bce4d5dab2aee10e079bb1779ab4;p=thirdparty%2Fvalgrind.git initial tun/tap ioctls. TUNSETIFF/TUNGETIFF/TUNSETOFFLOAD. See 315952. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13297 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index bc0400114a..bef2e24d82 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -5140,6 +5140,23 @@ PRE(sys_ioctl) sizeof(struct vki_rtentry)); break; + /* tun/tap related ioctls */ + 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)); + break; + case VKI_TUNSETOFFLOAD: + break; + case VKI_TUNGETIFF: + PRE_MEM_WRITE( "ioctl(TUNGETIFF)", ARG3, + sizeof(struct vki_ifreq)); + break; + /* RARP cache control calls. */ case VKI_SIOCDRARP: /* delete RARP table entry */ case VKI_SIOCSRARP: /* set RARP table entry */ @@ -6395,6 +6412,19 @@ POST(sys_ioctl) (Addr)&((struct vki_mii_ioctl_data *)&((struct vki_ifreq *)ARG3)->vki_ifr_data)->val_out, sizeof(((struct vki_mii_ioctl_data *)&((struct vki_ifreq *)ARG3)->vki_ifr_data)->val_out) ); break; + + /* tun/tap related ioctls */ + case VKI_TUNSETIFF: + POST_MEM_WRITE( (Addr)&((struct vki_ifreq *)ARG3)->vki_ifr_name, + sizeof(((struct vki_ifreq *)ARG3)->vki_ifr_name) ); + 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_SIOCGIFCONF: /* get iface list */ /* WAS: PRE_MEM_WRITE("ioctl(SIOCGIFCONF)", ARG3, sizeof(struct ifconf)); diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h index a1a05d1aa7..e3de1b3f56 100644 --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h @@ -3031,6 +3031,29 @@ struct vki_hwtstamp_config { #define VKI_IB_USER_MAD_ENABLE_PKEY _VKI_IO(VKI_IB_IOCTL_MAGIC, 3) +//---------------------------------------------------------------------- +// From linux-3.8/include/uapi/linux/if_tun.h +//---------------------------------------------------------------------- + +#define VKI_TUNSETNOCSUM _VKI_IOW('T', 200, int) +#define VKI_TUNSETDEBUG _VKI_IOW('T', 201, int) +#define VKI_TUNSETIFF _VKI_IOW('T', 202, int) +#define VKI_TUNSETPERSIST _VKI_IOW('T', 203, int) +#define VKI_TUNSETOWNER _VKI_IOW('T', 204, int) +#define VKI_TUNSETLINK _VKI_IOW('T', 205, int) +#define VKI_TUNSETGROUP _VKI_IOW('T', 206, int) +#define VKI_TUNGETFEATURES _VKI_IOR('T', 207, unsigned int) +#define VKI_TUNSETOFFLOAD _VKI_IOW('T', 208, unsigned int) +#define VKI_TUNSETTXFILTER _VKI_IOW('T', 209, unsigned int) +#define VKI_TUNGETIFF _VKI_IOR('T', 210, unsigned int) +#define VKI_TUNGETSNDBUF _VKI_IOR('T', 211, int) +#define VKI_TUNSETSNDBUF _VKI_IOW('T', 212, int) +//#define VKI_TUNATTACHFILTER _VKI_IOW('T', 213, struct sock_fprog) +//#define VKI_TUNDETACHFILTER _VKI_IOW('T', 214, struct sock_fprog) +#define VKI_TUNGETVNETHDRSZ _VKI_IOR('T', 215, int) +#define VKI_TUNSETVNETHDRSZ _VKI_IOW('T', 216, int) +#define VKI_TUNSETQUEUE _VKI_IOW('T', 217, int) + //---------------------------------------------------------------------- // Xen privcmd IOCTL //----------------------------------------------------------------------