/[rdesktop]/sourceforge.net/trunk/rdesktop/rdpdr.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/rdpdr.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 434 by matthewc, Tue Jul 1 09:31:25 2003 UTC revision 435 by astrand, Wed Jul 9 09:18:20 2003 UTC
# Line 20  rdpdr_send_connect(void) Line 20  rdpdr_send_connect(void)
20    
21          s = channel_init(rdpdr_channel, 12);          s = channel_init(rdpdr_channel, 12);
22          out_uint8a(s, magic, 4);          out_uint8a(s, magic, 4);
23          out_uint16_le(s, 1); /* unknown */          out_uint16_le(s, 1);    /* unknown */
24          out_uint16_le(s, 5);          out_uint16_le(s, 5);
25          out_uint32_be(s, 0x815ed39d); /* IP address (use 127.0.0.1) 0x815ed39d */          out_uint32_be(s, 0x815ed39d);   /* IP address (use 127.0.0.1) 0x815ed39d */
26          s_mark_end(s);          s_mark_end(s);
27          channel_send(s, rdpdr_channel);          channel_send(s, rdpdr_channel);
28  }  }
# Line 31  void Line 31  void
31  rdpdr_send_name(void)  rdpdr_send_name(void)
32  {  {
33          uint8 magic[4] = "rDNC";          uint8 magic[4] = "rDNC";
34          uint32 hostlen = (strlen(hostname)+1)*2;          uint32 hostlen = (strlen(hostname) + 1) * 2;
35          STREAM s;          STREAM s;
36    
37          s = channel_init(rdpdr_channel, 16+hostlen);          s = channel_init(rdpdr_channel, 16 + hostlen);
38          out_uint8a(s, magic, 4);          out_uint8a(s, magic, 4);
39          out_uint16_le(s, 0x63); /* unknown */          out_uint16_le(s, 0x63); /* unknown */
40          out_uint16_le(s, 0x72);          out_uint16_le(s, 0x72);
41          out_uint32(s, 0);          out_uint32(s, 0);
42          out_uint32_le(s, hostlen);          out_uint32_le(s, hostlen);
43          rdp_out_unistr(s, hostname, hostlen-2);          rdp_out_unistr(s, hostname, hostlen - 2);
44          s_mark_end(s);          s_mark_end(s);
45          channel_send(s, rdpdr_channel);          channel_send(s, rdpdr_channel);
46  }  }
# Line 49  void Line 49  void
49  rdpdr_send_available(void)  rdpdr_send_available(void)
50  {  {
51          uint8 magic[4] = "rDAD";          uint8 magic[4] = "rDAD";
52          char *driver = "Digital turbo PrintServer 20"; /* Fairly generic PostScript driver */          char *driver = "Digital turbo PrintServer 20";  /* Fairly generic PostScript driver */
53          char *printer = "PostScript";          char *printer = "PostScript";
54          uint32 driverlen = (strlen(driver)+1)*2;          uint32 driverlen = (strlen(driver) + 1) * 2;
55          uint32 printerlen = (strlen(printer)+1)*2;          uint32 printerlen = (strlen(printer) + 1) * 2;
56          STREAM s;          STREAM s;
57    
58          s = channel_init(rdpdr_channel, 8+20);          s = channel_init(rdpdr_channel, 8 + 20);
59          out_uint8a(s, magic, 4);          out_uint8a(s, magic, 4);
60          out_uint32_le(s, 1); /* Number of devices */          out_uint32_le(s, 1);    /* Number of devices */
61    
62  #if 1  #if 1
63          out_uint32_le(s, 0x1);  /* Device type 0x1 - serial */          out_uint32_le(s, 0x1);  /* Device type 0x1 - serial */
# Line 67  rdpdr_send_available(void) Line 67  rdpdr_send_available(void)
67          out_uint32(s, 0);          out_uint32(s, 0);
68  #endif  #endif
69  #if 0  #if 0
70          out_uint32_le(s, 0x2); /* Device type 0x2 - parallel */          out_uint32_le(s, 0x2);  /* Device type 0x2 - parallel */
71          out_uint32_le(s, 0);          out_uint32_le(s, 0);
72          out_uint8p(s, "LPT2", 4);          out_uint8p(s, "LPT2", 4);
73          out_uint8s(s, 4);          out_uint8s(s, 4);
74          out_uint32(s, 0);          out_uint32(s, 0);
75  #endif  #endif
76  #if 1  #if 1
77          out_uint32_le(s, 0x4); /* Device type 0x4 - printer */          out_uint32_le(s, 0x4);  /* Device type 0x4 - printer */
78          out_uint32_le(s, 1);          out_uint32_le(s, 1);
79          out_uint8p(s, "PRN1", 4);          out_uint8p(s, "PRN1", 4);
80          out_uint8s(s, 4);          out_uint8s(s, 4);
81          out_uint32_le(s, 24+driverlen+printerlen); /* length of extra info */          out_uint32_le(s, 24 + driverlen + printerlen);  /* length of extra info */
82          out_uint32_le(s, 2); /* unknown */          out_uint32_le(s, 2);    /* unknown */
83          out_uint8s(s, 8); /* unknown */          out_uint8s(s, 8);       /* unknown */
84          out_uint32_le(s, driverlen); /* length of driver name */          out_uint32_le(s, driverlen);    /* length of driver name */
85          out_uint32_le(s, printerlen); /* length of printer name */          out_uint32_le(s, printerlen);   /* length of printer name */
86          out_uint32(s, 0); /* unknown */          out_uint32(s, 0);       /* unknown */
87          rdp_out_unistr(s, driver, driverlen-2);          rdp_out_unistr(s, driver, driverlen - 2);
88          rdp_out_unistr(s, printer, printerlen-2);          rdp_out_unistr(s, printer, printerlen - 2);
89  #endif  #endif
90  #if 0  #if 0
91          out_uint32_le(s, 0x8); /* Device type 0x8 - disk */          out_uint32_le(s, 0x8);  /* Device type 0x8 - disk */
92          out_uint32_le(s, 0);          out_uint32_le(s, 0);
93          out_uint8p(s, "Z:", 2);          out_uint8p(s, "Z:", 2);
94          out_uint8s(s, 6);          out_uint8s(s, 6);
95          out_uint32(s, 0);          out_uint32(s, 0);
96  #endif  #endif
97  #if 0  #if 0
98          out_uint32_le(s, 0x20); /* Device type 0x20 - smart card */          out_uint32_le(s, 0x20); /* Device type 0x20 - smart card */
99          out_uint32_le(s, 0);          out_uint32_le(s, 0);
100          out_uint8p(s, "SCARD", 5);          out_uint8p(s, "SCARD", 5);
101          out_uint8s(s, 3);          out_uint8s(s, 3);
# Line 107  rdpdr_send_available(void) Line 107  rdpdr_send_available(void)
107  }  }
108    
109  void  void
110  rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 *buffer, uint32 length)  rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer,
111                          uint32 length)
112  {  {
113          uint8 magic[4] = "rDCI";          uint8 magic[4] = "rDCI";
114          STREAM s;          STREAM s;
# Line 120  rdpdr_send_completion(uint32 device, uin Line 121  rdpdr_send_completion(uint32 device, uin
121          out_uint32_le(s, result);          out_uint32_le(s, result);
122          out_uint8p(s, buffer, length);          out_uint8p(s, buffer, length);
123          s_mark_end(s);          s_mark_end(s);
124          hexdump(s->channel_hdr+8, s->end-s->channel_hdr-8);          hexdump(s->channel_hdr + 8, s->end - s->channel_hdr - 8);
125          channel_send(s, rdpdr_channel);          channel_send(s, rdpdr_channel);
126  }  }
127    
# Line 211  rdpdr_process(STREAM s) Line 212  rdpdr_process(STREAM s)
212          char *magic;          char *magic;
213    
214          printf("rdpdr_process\n");          printf("rdpdr_process\n");
215          hexdump(s->p, s->end-s->p);          hexdump(s->p, s->end - s->p);
216          in_uint8p(s, magic, 4);          in_uint8p(s, magic, 4);
217    
218          if ((magic[0] == 'r') && (magic[1] == 'D'))          if ((magic[0] == 'r') && (magic[1] == 'D'))
# Line 247  rdpdr_process(STREAM s) Line 248  rdpdr_process(STREAM s)
248  BOOL  BOOL
249  rdpdr_init(void)  rdpdr_init(void)
250  {  {
251          rdpdr_channel = channel_register("rdpdr", CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_COMPRESS_RDP, rdpdr_process);          rdpdr_channel =
252                    channel_register("rdpdr", CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_COMPRESS_RDP,
253                                     rdpdr_process);
254          return (rdpdr_channel != NULL);          return (rdpdr_channel != NULL);
255  }  }

Legend:
Removed from v.434  
changed lines
  Added in v.435

  ViewVC Help
Powered by ViewVC 1.1.26