take the sructure name to run through vluke on the command line
authorAndrew Tridgell <tridge@samba.org>
Tue, 16 May 2000 14:02:31 +0000 (14:02 +0000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 16 May 2000 14:02:31 +0000 (14:02 +0000)
source/aparser/harness.awk
source/aparser/main.awk
source/aparser/parsefn.awk
source/aparser/parsetree.awk
source/aparser/srvsvc.struct
source/aparser/templates/harness_start.tpl
source/aparser/vluke.c

index 00e3f44a682bc08e8b2b634308563c917a6ed004..f63863d638545e76a0d4a6ba101eb4d674c50520 100644 (file)
@@ -1,13 +1,22 @@
 function produce_harness(f,
-                        LOCAL, v, struct_num)
+                        LOCAL, v, struct_num, i)
 {
        struct_num=structs[test];
 
        v["MODULE"]=module;
-       v["TEST"]=test;
-       v["TEST_FUNC"]=moduletest;
-       v["STRUCTNAME"] = structs[struct_num, "name"];
-       v["FUNCNAME"] = "io_" v["STRUCTNAME"];
 
        print_template(f, "harness_start.tpl", v);
+
+       for (i=0;i<num_tests;i++) {
+               v["TEST"] = tests[i];
+               print_template(f, "harness.tpl", v);
+       }
+
+       print_template(f, "harness_end.tpl", v);
+}
+
+function add_test(test)
+{
+       tests[num_tests] = test;
+       num_tests++;
 }
index d891970c684462307095d5109533d3312ebc57c7..5d67f123c790517a563d26ffe708e5e9649fec46 100644 (file)
@@ -14,7 +14,7 @@
 }
 
 /^test/ {
-       test=$2;
+       add_test($2);
        next;
 }
 
index 3f1e3e8093f1097c29d3e660b160d1f378dfffa2..4c88cdeab8239b7506a5e8884c4bf78f5598bf28 100644 (file)
@@ -142,7 +142,8 @@ function struct_parser(f, v, struct_num,
 
        # and any trailers
        for (i=n1;i<structs[struct_num, "num_elems"];i++) {
-               parse_buffers(f, v, structs[struct_num, i], "PARSE_SCALARS");
+               parse_scalars(f, v, structs[struct_num, i], "PARSE_SCALARS");
+               parse_buffers(f, v, structs[struct_num, i], "PARSE_BUFFERS");
        }
 
        print_template(f, "fn_end.tpl", v);
index 6f2697ec91fe21e62ae759b01c259dbb8f15526b..cd4e442c9b8a0d7dadb29ad6e5284f02b92333aa 100644 (file)
@@ -6,6 +6,7 @@ function start_module(name)
        num_structs=0;
        num_elements=0;
        num_unions=0;
+       num_tests=0;
 }
 
 function start_struct(name) 
index 44d88944cbc4a9c7f2dd0942a0fedbecfb170ce7..f8dd94a2e696e8ed87216a2241a2e9d9abab14f4 100644 (file)
@@ -1,5 +1,16 @@
 module srvsvc
+test SRV_R_NET_SHARE_ENUM
 test SRV_R_NET_SERVER_INFO
+test SRV_Q_NET_SERVER_INFO
+
+#define SRV_NETCONNENUM        0x08
+#define SRV_NETFILEENUM        0x09
+#define SRV_NETSESSENUM        0x0c
+#define SRV_NETSHAREENUM       0x0f
+#define SRV_NET_SHARE_GET_INFO 0x10
+#define SRV_NET_SRV_GET_INFO   0x15
+#define SRV_NET_SRV_SET_INFO   0x16
+#define SRV_NET_REMOTE_TOD     0x1c
 
 struct UNISTR2 {
        uint32 max_len;
@@ -12,6 +23,40 @@ struct LPWSTR {
        UNISTR2 *str;
 };
 
+struct ENUM_HND {
+       uint32 *handle;           /* enumeration handle */
+};
+
+/* function 8 */
+struct CONN_INFO_0 {
+       uint32 id; /* connection id. */
+};
+
+struct CONN_INFO_1 {
+       uint32 id; 
+       uint32 type;
+       uint32 num_opens;
+       uint32 num_users;
+       uint32 open_time;
+       LPWSTR usr_name;
+       LPWSTR net_name; 
+};
+
+struct SRV_R_NET_CONN_ENUM {
+       uint32 level;
+       uint32 level2;
+       uint32 num_entries;
+       union *info[level] {
+               case 0 CONN_INFO_0 info0[num_entries]; 
+               case 1 CONN_INFO_1 info1[num_entries]; 
+       }
+        .trailer;
+        uint32 count;
+        ENUM_HND handle;
+        uint32 status1;
+        uint32 status2;
+};
+
 /* function 15 */
 struct SRV_SHARE_INFO_1 {
        LPWSTR uni_netname;
@@ -63,28 +108,35 @@ struct SERVER_INFO_101 {
 };
 
 struct SERVER_INFO_102 {
-    uint32  dwPlatformID;
+    uint32 dwPlatformID;
     LPWSTR pszName;
-    uint32  dwVerMajor;
-    uint32  dwVerMinor;
-    uint32  dwType;
+    uint32 dwVerMajor;
+    uint32 dwVerMinor;
+    uint32 dwType;
     LPWSTR pszComment;
-    uint32  dwUsers;
-    uint32   lDisc;
-    uint32   bHidden;
-    uint32  dwAnnounce;
-    uint32  dwAnnDelta;
-    uint32  dwLicenses;
+    uint32 dwUsers;
+    uint32 lDisc;
+    uint32 bHidden;
+    uint32 dwAnnounce;
+    uint32 dwAnnDelta;
+    uint32 dwLicenses;
     LPWSTR pszUserPath;
 };
 
 struct SRV_R_NET_SERVER_INFO {
+       .trailer;
        uint32 level;
-       union info[level] {
-               case 100 SERVER_INFO_100 *sv100;
-               case 101 SERVER_INFO_101 *sv101;
-               case 102 SERVER_INFO_102 *sv102;
+       union *info[level] {
+               case 100 SERVER_INFO_100 sv100;
+               case 101 SERVER_INFO_101 sv101;
+               case 102 SERVER_INFO_102 sv102;
        }
-       .trailer;
        uint32 status;
 };
+
+struct SRV_Q_NET_SERVER_INFO {
+       .trailer;
+       LPWSTR server;
+       uint32 level;
+};
+
index 7e6ab9dc3acf782a0d863c6ec47375b26f095b3d..e6cf18a163a0152292373d80c27fc1882f852d58 100644 (file)
@@ -1,7 +1,8 @@
-#define TEST_STRUCT @STRUCTNAME@
-#define TEST_NAME "@TEST@"
-#define TEST_FUNC @FUNCNAME@
-
-
 #include "prs_@MODULE@.h"
 #include "prs_@MODULE@.c"
+
+static BOOL run_test(char *test, prs_struct *ps) 
+{
+       BOOL ret;
+
+       
\ No newline at end of file
index f5612a773d573971de221f029368ef80df980c7c..5a64e06eb05818cbd57e181be495fea864ec6b13 100644 (file)
 int main(int argc, char *argv[])
 {
        BOOL ret;
-       TEST_STRUCT *il;
-       char *desc = TEST_NAME;
-       char *fname = argv[1];
+       char *fname, *test;
        int fd; 
        struct stat st;
        prs_struct ps;
 
-       if (argc < 2) {
-               printf("usage: vluke <file>\n");
+       if (argc < 3) {
+               printf("usage: vluke <structure> <file>\n");
                exit(1);
        }
 
+       test = argv[1];
+       fname = argv[2];
+
        fd = open(fname,O_RDONLY);
        fstat(fd, &st);
 
@@ -31,8 +32,7 @@ int main(int argc, char *argv[])
        prs_read(&ps, fd, st.st_size, 0);
        ps.data_offset = 0;
        ps.io = UNMARSHALL;
-       il = (TEST_STRUCT *)malloc(sizeof(*il));
-       ret = TEST_FUNC(desc, &ps, 1, il, PARSE_SCALARS|PARSE_BUFFERS);
+       ret = run_test(test, &ps);
        printf("\nret=%s\n", ret?"OK":"Bad");
        printf("Trailer is %d bytes\n\n", ps.grow_size - ps.data_offset);
        dump_data(0, ps.data_p, ps.grow_size);