On Sun, 2008-12-21 at 05:59 -0800, CAI Qian wrote: > Hi, > > The newly added test case ioctl03[1] introduces some problems. > > First, compilation errors: > > cc -I../../../../include -Wall ioctl03.c -L../../../../lib -lltp -o > ioctl03 > In file included from ioctl03.c:41: > /usr/include/sys/types.h:46: error: conflicting types for ‘loff_t’ > /usr/include/linux/types.h:30: error: previous declaration of ‘loff_t’ was > here > /usr/include/sys/types.h:62: error: conflicting types for ‘dev_t’ > /usr/include/linux/types.h:13: error: previous declaration of ‘dev_t’ was here > In file included from /usr/include/sys/types.h:133, > from ioctl03.c:41: > /usr/include/time.h:105: error: conflicting types for ‘timer_t’ > /usr/include/linux/types.h:22: error: previous declaration of ‘timer_t’ was > here > In file included from ioctl03.c:41: > /usr/include/sys/types.h:198: error: conflicting types for ‘int64_t’ > /usr/include/linux/types.h:98: error: previous declaration of ‘int64_t’ was > here > /usr/include/sys/types.h:204: error: conflicting types for ‘u_int64_t’ > /usr/include/linux/types.h:97: error: previous declaration of ‘u_int64_t’ was > here > In file included from /usr/include/sys/types.h:220, > from ioctl03.c:41: > /usr/include/sys/select.h:78: error: conflicting types for ‘fd_set’ > /usr/include/linux/types.h:12: error: previous declaration of ‘fd_set’ was > here > In file included from ioctl03.c:41: > /usr/include/sys/types.h:235: error: conflicting types for ‘blkcnt_t’ > /usr/include/linux/types.h:124: error: previous declaration of ‘blkcnt_t’ was > here > make: *** [ioctl03] Error 1 > > Second, test failures and misuse of TCONF: > > # ./ioctl03 > ioctl03 0 INFO : Available features are: > ioctl03 1 CONF : TUN > ioctl03 2 CONF : TAP > ioctl03 3 CONF : NO_PI > ioctl03 4 CONF : ONE_QUEUE > ioctl03 5 FAIL : (UNKNOWN 0x4000) > > The following patch fixes them by changing an order of a header file and also > checking > IFF_VNET_HDR. It also tidy up the code and add some more information to test > output. > > Test result after applied the patch is, > > # uname -ra > Linux localhost.localdomain 2.6.27-0.392.rc8.git7.fc10.x86_64 #1 SMP Sun Oct > 5 22:42:31 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux > > # ./ioctl03 > ioctl03 0 INFO : Available features are: 0x7003 > ioctl03 0 INFO : TUN 0x1 > ioctl03 0 INFO : TAP 0x2 > ioctl03 0 INFO : NO_PI 0x1000 > ioctl03 0 INFO : ONE_QUEUE 0x2000 > ioctl03 0 INFO : VNET_HDR 0x4000 > > [1] http://article.gmane.org/gmane.linux.ltp/6615 > > Signed-off-by: CAI Qian <[email protected]>
Thanks for this Patch. However.......... > > --- testcases/kernel/syscalls/ioctl/ioctl03.c.orig 2008-12-21 > 20:36:38.309680227 +0800 > +++ testcases/kernel/syscalls/ioctl/ioctl03.c 2008-12-21 21:57:53.406680851 > +0800 > @@ -37,13 +37,13 @@ > /* - Nov 28 2008 - Subrata <[email protected]> > */ > > /******************************************************************************/ > > -#include <linux/if_tun.h> > #include <sys/types.h> > #include <sys/ioctl.h> > #include <sys/stat.h> > #include <fcntl.h> > #include <errno.h> > #include <stdio.h> > +#include <linux/if_tun.h> Definition of IFF_VNET_HDR inside <linux/if_tun.h> has been added only recently in June 2008 by Rusty: https://lists.linux-foundation.org/pipermail/virtualization/2008-June/011176.html, So, compilation will still fail in systems having old <linux/if_tun.h>. Hence, we also need to include the following: #ifndef define #define IFF_VNET_HDR 0x4000 #endif Which i did after applying your patch. Regards-- Subrata > > /* Harness Specific Include Files. */ > #include "test.h" > @@ -58,7 +58,7 @@ > extern char *TESTDIR; /* temporary dir created by > tst_tmpdir() */ > > /* Global Variables */ > -char *TCID = "ioctl03"; /* test program identifier. */ > +char *TCID = "ioctl03"; /* test program identifier. > */ > int TST_TOTAL = 1; /* total number of tests in this file. > */ > > /* Extern Global Functions */ > @@ -84,7 +84,7 @@ > TEST_CLEANUP; > tst_rmdir(); > > - /* Exit with appropriate return code. */ > + /* Exit with appropriate return code. */ > tst_exit(); > } > > @@ -108,50 +108,50 @@ > /* > */ > > /******************************************************************************/ > void setup() { > - /* Capture signals if any */ > - /* Create temporary directories */ > - TEST_PAUSE; > - tst_tmpdir(); > + /* Capture signals if any */ > + /* Create temporary directories */ > + TEST_PAUSE; > + tst_tmpdir(); > } > > > static struct { > - unsigned int flag; > - const char *name; > + unsigned int flag; > + const char *name; > } known_flags[] = { > { IFF_TUN, "TUN" }, > { IFF_TAP, "TAP" }, > { IFF_NO_PI, "NO_PI" }, > { IFF_ONE_QUEUE, "ONE_QUEUE" }, > + { IFF_VNET_HDR, "VNET_HDR"} > }; > > int main() { > - unsigned int features, i; > + unsigned int features, i; > > - setup(); > - if (geteuid()!=0) { > - tst_brkm(TBROK, cleanup, "You need to be ROOT to run this test case"); > - tst_exit(); > - } > - int netfd = open("/dev/net/tun", O_RDWR); > - if (netfd < 0) > + setup(); > + if (geteuid()!=0) { > + tst_brkm(TBROK, cleanup, "You need to be ROOT to run this test case"); > + tst_exit(); > + } > + int netfd = open("/dev/net/tun", O_RDWR); > + if (netfd < 0) > tst_brkm(TBROK, cleanup, "Error Opening /dev/net/tun: %s", > strerror(errno)); > > - if (ioctl(netfd, TUNGETFEATURES, &features) != 0) { > - tst_resm(TCONF, "Kernel does not support TUNGETFEATURES"); > - features = (IFF_TUN|IFF_TAP|IFF_NO_PI|IFF_ONE_QUEUE); > - cleanup(); > - tst_exit(); > - } > - tst_resm(TINFO,"Available features are: "); > - for (i = 0; i < sizeof(known_flags)/sizeof(known_flags[0]); i++) { > - if (features & known_flags[i].flag) { > - features &= ~known_flags[i].flag; > - tst_resm(TCONF, "%s ", known_flags[i].name); > - } > - } > - if (features) > - tst_resm(TFAIL, "(UNKNOWN %#x)", features); > - cleanup(); > - tst_exit(); > + if (ioctl(netfd, TUNGETFEATURES, &features) != 0) { > + tst_resm(TCONF, "Kernel does not support TUNGETFEATURES"); > + cleanup(); > + tst_exit(); > + } > + tst_resm(TINFO,"Available features are: %#x", features); > + for (i = 0; i < sizeof(known_flags)/sizeof(known_flags[0]); i++) { > + if (features & known_flags[i].flag) { > + features &= ~known_flags[i].flag; > + tst_resm(TINFO, "%s %#x", known_flags[i].name, known_flags[i].flag); > + } > + } > + if (features) > + tst_resm(TFAIL, "(UNKNOWN %#x)", features); > + cleanup(); > + tst_exit(); > } > > ------------------------------------------------------------------------------ > _______________________________________________ > Ltp-list mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ltp-list ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
