home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / samba.idb / usr / samba / src / source / rpc_pipes / srvparse.c.z / srvparse.c
Encoding:
C/C++ Source or Header  |  1998-10-28  |  6.3 KB  |  211 lines

  1.  
  2. /* 
  3.  *  Unix SMB/Netbios implementation.
  4.  *  Version 1.9.
  5.  *  RPC Pipe client / server routines
  6.  *  Copyright (C) Andrew Tridgell              1992-1997,
  7.  *  Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
  8.  *  Copyright (C) Paul Ashton                       1997.
  9.  *  
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *  
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *  
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  */
  24.  
  25.  
  26. #include "../includes.h"
  27.  
  28. extern int DEBUGLEVEL;
  29.  
  30. #ifdef NTDOMAIN
  31.  
  32. /*******************************************************************
  33. reads or writes a structure.
  34. ********************************************************************/
  35. char* srv_io_share_info1_str(BOOL io, SH_INFO_1_STR *sh1, char *q, char *base, int align, int depth)
  36. {
  37.     if (sh1 == NULL) return NULL;
  38.  
  39.     DEBUG(5,("%s%04x srv_io_share_info1_str\n", tab_depth(depth), PTR_DIFF(q, base)));
  40.     depth++;
  41.  
  42.     q = align_offset(q, base, align);
  43.  
  44.     q = smb_io_unistr2(io, &(sh1->uni_netname), q, base, align, depth); 
  45.     q = smb_io_unistr2(io, &(sh1->uni_remark ), q, base, align, depth); 
  46.  
  47.     return q;
  48. }
  49.  
  50. /*******************************************************************
  51. reads or writes a structure.
  52. ********************************************************************/
  53. char* srv_io_share_info1(BOOL io, SH_INFO_1 *sh1, char *q, char *base, int align, int depth)
  54. {
  55.     if (sh1 == NULL) return NULL;
  56.  
  57.     DEBUG(5,("%s%04x srv_io_share_info1\n", tab_depth(depth), PTR_DIFF(q, base)));
  58.     depth++;
  59.  
  60.     q = align_offset(q, base, align);
  61.  
  62.     DBG_RW_IVAL("ptr_netname", depth, base, io, q, sh1->ptr_netname); q += 4;
  63.     DBG_RW_IVAL("type       ", depth, base, io, q, sh1->type       ); q += 4;
  64.     DBG_RW_IVAL("ptr_remark ", depth, base, io, q, sh1->ptr_remark); q += 4;
  65.  
  66.     return q;
  67. }
  68.  
  69. /*******************************************************************
  70. reads or writes a structure.
  71. ********************************************************************/
  72. char* srv_io_share_1_ctr(BOOL io, SHARE_INFO_1_CTR *ctr, char *q, char *base, int align, int depth)
  73. {
  74.     if (ctr == NULL) return NULL;
  75.  
  76.     DEBUG(5,("%s%04x srv_io_share_1_ctr\n", tab_depth(depth), PTR_DIFF(q, base)));
  77.     depth++;
  78.  
  79.     q = align_offset(q, base, align);
  80.  
  81.     DBG_RW_IVAL("num_entries_read", depth, base, io, q, ctr->num_entries_read); q += 4;
  82.     DBG_RW_IVAL("ptr_share_info", depth, base, io, q, ctr->ptr_share_info); q += 4;
  83.  
  84.     if (ctr->ptr_share_info != 0)
  85.     {
  86.         int i;
  87.         int num_entries = ctr->num_entries_read;
  88.         if (num_entries > MAX_SHARE_ENTRIES)
  89.         {
  90.             num_entries = MAX_SHARE_ENTRIES; /* report this! */
  91.         }
  92.  
  93.         DBG_RW_IVAL("num_entries_read2", depth, base, io, q, ctr->num_entries_read2); q += 4;
  94.  
  95.         for (i = 0; i < num_entries; i++)
  96.         {
  97.             q = srv_io_share_info1(io, &(ctr->info_1[i]), q, base, align, depth); 
  98.         }
  99.  
  100.         for (i = 0; i < num_entries; i++)
  101.         {
  102.             q = srv_io_share_info1_str(io, &(ctr->info_1_str[i]), q, base, align, depth); 
  103.         }
  104.  
  105.         q = align_offset(q, base, align);
  106.         DBG_RW_IVAL("num_entries_read3", depth, base, io, q, ctr->num_entries_read3); q += 4;
  107.         DBG_RW_IVAL("padding          ", depth, base, io, q, ctr->padding); q += 4;
  108.     }
  109.  
  110.     return q;
  111. }
  112.  
  113. /*******************************************************************
  114. reads or writes a structure.
  115. ********************************************************************/
  116. char* srv_io_q_net_share_enum(BOOL io, SRV_Q_NET_SHARE_ENUM *q_n, char *q, char *base, int align, int depth)
  117. {
  118.     if (q_n == NULL) return NULL;
  119.  
  120.     DEBUG(5,("%s%04x srv_io_q_net_share_enum\n", tab_depth(depth), PTR_DIFF(q, base)));
  121.     depth++;
  122.  
  123.     q = align_offset(q, base, align);
  124.  
  125.     DBG_RW_IVAL("ptr_srv_name", depth, base, io, q, q_n->ptr_srv_name); q += 4;
  126.     q = smb_io_unistr2(io, &(q_n->uni_srv_name), q, base, align, depth); 
  127.  
  128.     q = align_offset(q, base, align);
  129.  
  130.     DBG_RW_IVAL("share_level   ", depth, base, io, q, q_n->share_level); q += 4;
  131.     DBG_RW_IVAL("switch_value  ", depth, base, io, q, q_n->switch_value); q += 4;
  132.  
  133.     DBG_RW_IVAL("ptr_share_info", depth, base, io, q, q_n->ptr_share_info); q += 4;
  134.     if (q_n->ptr_share_info != 0)
  135.     {
  136.         switch (q_n->switch_value)
  137.         {
  138.             case 1:
  139.             {
  140.                 q = srv_io_share_1_ctr(io, &(q_n->share.info1), q, base, align, depth); 
  141.                 break;
  142.             }
  143.             default:
  144.             {
  145.                 DEBUG(5,("%s% no share info at switch_value %d\n",
  146.                          tab_depth(depth), q_n->switch_value));
  147.                 break;
  148.             }
  149.         }
  150.     }
  151.     DBG_RW_IVAL("preferred_len ", depth, base, io, q, q_n->preferred_len); q += 4;
  152.  
  153.     return q;
  154. }
  155.  
  156. /*******************************************************************
  157. reads or writes a structure.
  158. ********************************************************************/
  159. char* srv_io_r_net_share_enum(BOOL io, SRV_R_NET_SHARE_ENUM *r_n, char *q, char *base, int align, int depth)
  160. {
  161.     if (r_n == NULL) return NULL;
  162.  
  163.     DEBUG(5,("%s%04x srv_io_q_net_share_enum\n", tab_depth(depth), PTR_DIFF(q, base)));
  164.     depth++;
  165.  
  166.     q = align_offset(q, base, align);
  167.  
  168.     DBG_RW_IVAL("share_level   ", depth, base, io, q, r_n->share_level); q += 4;
  169.     DBG_RW_IVAL("switch_value  ", depth, base, io, q, r_n->switch_value); q += 4;
  170.  
  171.     DBG_RW_IVAL("ptr_share_info", depth, base, io, q, r_n->ptr_share_info); q += 4;
  172.     if (r_n->ptr_share_info != 0)
  173.     {
  174.         switch (r_n->switch_value)
  175.         {
  176.             case 1:
  177.             {
  178.                 q = srv_io_share_1_ctr(io, &(r_n->share.info1), q, base, align, depth); 
  179.                 break;
  180.             }
  181.             default:
  182.             {
  183.                 DEBUG(5,("%s% no share info at switch_value %d\n",
  184.                          tab_depth(depth), r_n->switch_value));
  185.                 break;
  186.             }
  187.         }
  188.     }
  189.     DBG_RW_IVAL("status        ", depth, base, io, q, r_n->status); q += 4;
  190.  
  191.     return q;
  192. }
  193.  
  194. #if 0
  195. /*******************************************************************
  196. reads or writes a structure.
  197. ********************************************************************/
  198.  char* lsa_io_(BOOL io, *, char *q, char *base, int align, int depth)
  199. {
  200.     if (== NULL) return NULL;
  201.  
  202.     q = align_offset(q, base, align);
  203.     
  204.     DBG_RW_IVAL("", depth, base, io, q, ); q += 4;
  205.  
  206.     return q;
  207. }
  208. #endif
  209.  
  210. #endif
  211.