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