added another wkssvc info level
authorAndrew Tridgell <tridge@samba.org>
Tue, 18 Nov 2003 11:52:06 +0000 (11:52 +0000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 18 Nov 2003 11:52:06 +0000 (11:52 +0000)
source/librpc/idl/wkssvc.idl
source/librpc/ndr/ndr_wkssvc.c
source/librpc/ndr/ndr_wkssvc.h
source/torture/rpc/wkssvc.c

index 40365276213f85be029f0a095f9f9d7b6f05bc3f..b7ca97463d868fb949fea0ec6599de4e4a303613 100644 (file)
@@ -7,8 +7,12 @@
   pointer_default(unique)
 ] interface wkssvc
 {
+
+#define BOOL uint32
+
        /******************/
        /* Function: 0x00 */
+
        typedef struct {
                uint32 platform_id;
                unistr *server;
                uint32 logged_on_users;
        } wkssvc_Info102;
 
+       typedef struct {
+               uint32 char_wait;
+               uint32 collection_time;
+               uint32 maximum_collection_count;
+               uint32 keep_connection;
+               uint32 max_commands;
+               uint32 session_timeout;
+               uint32 size_char_buf;
+               uint32 max_threads;
+               uint32 lock_quota;
+               uint32 lock_increment;
+               uint32 lock_maximum;
+               uint32 pipe_increment;
+               uint32 pipe_maximum;
+               uint32 cache_file_timeout;
+               uint32 dormant_file_limit;
+               uint32 read_ahead_throughput;
+               uint32 num_mailslot_buffers;
+               uint32 num_srv_announce_buffers;
+               uint32 max_illegal_dgram_events;
+               uint32 dgram_event_reset_freq;
+               BOOL log_election_packets;
+               BOOL use_opportunistic_locking;
+               BOOL use_unlock_behind;
+               BOOL use_close_behind;
+               BOOL buf_named_pipes;
+               BOOL use_lock_read_unlock;
+               BOOL utilize_nt_caching;
+               BOOL use_raw_read;
+               BOOL use_raw_write;
+               BOOL use_write_raw_data;
+               BOOL use_encryption;
+               BOOL buf_files_deny_write;
+               BOOL buf_read_only_files;
+               BOOL force_core_create_mode;
+               BOOL use_512_byte_max_transfer;
+       } wkssvc_Info502;
+
        typedef union {
                case (100) wkssvc_Info100 *info100;
                case (101) wkssvc_Info101 *info101;
                case (102) wkssvc_Info102 *info102;
+               case (502) wkssvc_Info502 *info502;
        } wkssvc_Info;
 
        WERROR wkssvc_QueryInfo(
index 48e63c93e1969864902bb90b86737e3b084c8a00..47ddbcb9bf8704367d2122ae13874db6ee5b4cc7 100644 (file)
@@ -415,6 +415,53 @@ done:
        return NT_STATUS_OK;
 }
 
+NTSTATUS ndr_pull_wkssvc_Info502(struct ndr_pull *ndr, int ndr_flags, struct wkssvc_Info502 *r)
+{
+       NDR_CHECK(ndr_pull_struct_start(ndr));
+       if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+       NDR_CHECK(ndr_pull_align(ndr, 4));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->char_wait));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->collection_time));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->maximum_collection_count));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->keep_connection));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->max_commands));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->session_timeout));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->size_char_buf));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->max_threads));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->lock_quota));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->lock_increment));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->lock_maximum));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->pipe_increment));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->pipe_maximum));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->cache_file_timeout));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->dormant_file_limit));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->read_ahead_throughput));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->num_mailslot_buffers));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->num_srv_announce_buffers));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->max_illegal_dgram_events));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->dgram_event_reset_freq));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->log_election_packets));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_opportunistic_locking));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_unlock_behind));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_close_behind));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->buf_named_pipes));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_lock_read_unlock));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->utilize_nt_caching));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_raw_read));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_raw_write));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_write_raw_data));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_encryption));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->buf_files_deny_write));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->buf_read_only_files));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->force_core_create_mode));
+       NDR_CHECK(ndr_pull_uint32(ndr, &r->use_512_byte_max_transfer));
+       ndr_pull_struct_end(ndr);
+buffers:
+       if (!(ndr_flags & NDR_BUFFERS)) goto done;
+done:
+       return NT_STATUS_OK;
+}
+
 NTSTATUS ndr_pull_wkssvc_Info(struct ndr_pull *ndr, int ndr_flags, uint16 *level, union wkssvc_Info *r)
 {
        if (!(ndr_flags & NDR_SCALARS)) goto buffers;
@@ -451,6 +498,16 @@ NTSTATUS ndr_pull_wkssvc_Info(struct ndr_pull *ndr, int ndr_flags, uint16 *level
        }
        break; }
 
+       case 502: {
+               uint32 _ptr_info502;
+       NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_info502));
+       if (_ptr_info502) {
+               NDR_ALLOC(ndr, r->info502);
+       } else {
+               r->info502 = NULL;
+       }
+       break; }
+
        default:
                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", *level);
        }
@@ -476,6 +533,12 @@ buffers:
        }
        break;
 
+       case 502:
+       if (r->info502) {
+               NDR_CHECK(ndr_pull_wkssvc_Info502(ndr, NDR_SCALARS|NDR_BUFFERS, r->info502));
+       }
+       break;
+
        default:
                return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", *level);
        }
@@ -918,6 +981,48 @@ void ndr_print_wkssvc_Info102(struct ndr_print *ndr, const char *name, struct wk
        ndr->depth--;
 }
 
+void ndr_print_wkssvc_Info502(struct ndr_print *ndr, const char *name, struct wkssvc_Info502 *r)
+{
+       ndr_print_struct(ndr, name, "wkssvc_Info502");
+       ndr->depth++;
+       ndr_print_uint32(ndr, "char_wait", r->char_wait);
+       ndr_print_uint32(ndr, "collection_time", r->collection_time);
+       ndr_print_uint32(ndr, "maximum_collection_count", r->maximum_collection_count);
+       ndr_print_uint32(ndr, "keep_connection", r->keep_connection);
+       ndr_print_uint32(ndr, "max_commands", r->max_commands);
+       ndr_print_uint32(ndr, "session_timeout", r->session_timeout);
+       ndr_print_uint32(ndr, "size_char_buf", r->size_char_buf);
+       ndr_print_uint32(ndr, "max_threads", r->max_threads);
+       ndr_print_uint32(ndr, "lock_quota", r->lock_quota);
+       ndr_print_uint32(ndr, "lock_increment", r->lock_increment);
+       ndr_print_uint32(ndr, "lock_maximum", r->lock_maximum);
+       ndr_print_uint32(ndr, "pipe_increment", r->pipe_increment);
+       ndr_print_uint32(ndr, "pipe_maximum", r->pipe_maximum);
+       ndr_print_uint32(ndr, "cache_file_timeout", r->cache_file_timeout);
+       ndr_print_uint32(ndr, "dormant_file_limit", r->dormant_file_limit);
+       ndr_print_uint32(ndr, "read_ahead_throughput", r->read_ahead_throughput);
+       ndr_print_uint32(ndr, "num_mailslot_buffers", r->num_mailslot_buffers);
+       ndr_print_uint32(ndr, "num_srv_announce_buffers", r->num_srv_announce_buffers);
+       ndr_print_uint32(ndr, "max_illegal_dgram_events", r->max_illegal_dgram_events);
+       ndr_print_uint32(ndr, "dgram_event_reset_freq", r->dgram_event_reset_freq);
+       ndr_print_uint32(ndr, "log_election_packets", r->log_election_packets);
+       ndr_print_uint32(ndr, "use_opportunistic_locking", r->use_opportunistic_locking);
+       ndr_print_uint32(ndr, "use_unlock_behind", r->use_unlock_behind);
+       ndr_print_uint32(ndr, "use_close_behind", r->use_close_behind);
+       ndr_print_uint32(ndr, "buf_named_pipes", r->buf_named_pipes);
+       ndr_print_uint32(ndr, "use_lock_read_unlock", r->use_lock_read_unlock);
+       ndr_print_uint32(ndr, "utilize_nt_caching", r->utilize_nt_caching);
+       ndr_print_uint32(ndr, "use_raw_read", r->use_raw_read);
+       ndr_print_uint32(ndr, "use_raw_write", r->use_raw_write);
+       ndr_print_uint32(ndr, "use_write_raw_data", r->use_write_raw_data);
+       ndr_print_uint32(ndr, "use_encryption", r->use_encryption);
+       ndr_print_uint32(ndr, "buf_files_deny_write", r->buf_files_deny_write);
+       ndr_print_uint32(ndr, "buf_read_only_files", r->buf_read_only_files);
+       ndr_print_uint32(ndr, "force_core_create_mode", r->force_core_create_mode);
+       ndr_print_uint32(ndr, "use_512_byte_max_transfer", r->use_512_byte_max_transfer);
+       ndr->depth--;
+}
+
 void ndr_print_wkssvc_Info(struct ndr_print *ndr, const char *name, uint16 level, union wkssvc_Info *r)
 {
        ndr_print_union(ndr, name, level, "wkssvc_Info");
@@ -949,6 +1054,15 @@ void ndr_print_wkssvc_Info(struct ndr_print *ndr, const char *name, uint16 level
        ndr->depth--;
        break;
 
+       case 502:
+       ndr_print_ptr(ndr, "info502", r->info502);
+       ndr->depth++;
+       if (r->info502) {
+               ndr_print_wkssvc_Info502(ndr, "info502", r->info502);
+       }
+       ndr->depth--;
+       break;
+
        default:
                ndr_print_bad_level(ndr, name, level);
        }
index 805903620bb85308797215c82be3705e6819cf34..d4930e3baeb2987339f1cbe11f6faa58d804b77c 100644 (file)
@@ -64,10 +64,49 @@ struct wkssvc_Info102 {
        uint32 logged_on_users;
 };
 
+struct wkssvc_Info502 {
+       uint32 char_wait;
+       uint32 collection_time;
+       uint32 maximum_collection_count;
+       uint32 keep_connection;
+       uint32 max_commands;
+       uint32 session_timeout;
+       uint32 size_char_buf;
+       uint32 max_threads;
+       uint32 lock_quota;
+       uint32 lock_increment;
+       uint32 lock_maximum;
+       uint32 pipe_increment;
+       uint32 pipe_maximum;
+       uint32 cache_file_timeout;
+       uint32 dormant_file_limit;
+       uint32 read_ahead_throughput;
+       uint32 num_mailslot_buffers;
+       uint32 num_srv_announce_buffers;
+       uint32 max_illegal_dgram_events;
+       uint32 dgram_event_reset_freq;
+       uint32 log_election_packets;
+       uint32 use_opportunistic_locking;
+       uint32 use_unlock_behind;
+       uint32 use_close_behind;
+       uint32 buf_named_pipes;
+       uint32 use_lock_read_unlock;
+       uint32 utilize_nt_caching;
+       uint32 use_raw_read;
+       uint32 use_raw_write;
+       uint32 use_write_raw_data;
+       uint32 use_encryption;
+       uint32 buf_files_deny_write;
+       uint32 buf_read_only_files;
+       uint32 force_core_create_mode;
+       uint32 use_512_byte_max_transfer;
+};
+
 union wkssvc_Info {
 /* [case(100)] */ struct wkssvc_Info100 *info100;
 /* [case(101)] */ struct wkssvc_Info101 *info101;
 /* [case(102)] */ struct wkssvc_Info102 *info102;
+/* [case(502)] */ struct wkssvc_Info502 *info502;
 };
 
 struct wkssvc_QueryInfo {
index b8ae3de2020e0e6d195d4e85eb0b05ba35de4530..13af1184e9d21e5276e949280017f91e093da265 100644 (file)
@@ -27,7 +27,7 @@ static BOOL test_QueryInfo(struct dcerpc_pipe *p,
 {
        NTSTATUS status;
        struct wkssvc_QueryInfo r;
-       uint16 levels[] = {100, 101, 102};
+       uint16 levels[] = {100, 101, 102, 502};
        int i;
        BOOL ret = True;