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]>

--- 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>
 
 /* 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

Reply via email to