/[rdesktop]/sourceforge.net/trunk/rdesktop/iso.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/iso.c

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

revision 10 by matty, Tue Aug 15 10:23:24 2000 UTC revision 25 by matty, Sat Jan 6 03:47:04 2001 UTC
# Line 21  Line 21 
21  #include "rdesktop.h"  #include "rdesktop.h"
22    
23  /* Send a self-contained ISO PDU */  /* Send a self-contained ISO PDU */
24  static void iso_send_msg(uint8 code)  static void
25    iso_send_msg(uint8 code)
26  {  {
27          STREAM s;          STREAM s;
28    
29          s = tcp_init(11);          s = tcp_init(11);
30    
31          out_uint8(s, 3); /* version */          out_uint8(s, 3);        /* version */
32          out_uint8(s, 0); /* reserved */          out_uint8(s, 0);        /* reserved */
33          out_uint16_be(s, 11); /* length */          out_uint16_be(s, 11);   /* length */
34    
35          out_uint8(s, 6);  /* hdrlen */          out_uint8(s, 6);        /* hdrlen */
36          out_uint8(s, code);          out_uint8(s, code);
37          out_uint16(s, 0); /* dst_ref */          out_uint16(s, 0);       /* dst_ref */
38          out_uint16(s, 0); /* src_ref */          out_uint16(s, 0);       /* src_ref */
39          out_uint8(s, 0);  /* class */          out_uint8(s, 0);        /* class */
40    
41          s_mark_end(s);          s_mark_end(s);
42          tcp_send(s);          tcp_send(s);
43  }  }
44    
45  /* Receive a message on the ISO layer, return code */  /* Receive a message on the ISO layer, return code */
46  static STREAM iso_recv_msg(uint8 *code)  static STREAM
47    iso_recv_msg(uint8 *code)
48  {  {
49          STREAM s;          STREAM s;
50          uint16 length;          uint16 length;
# Line 59  static STREAM iso_recv_msg(uint8 *code) Line 61  static STREAM iso_recv_msg(uint8 *code)
61                  return False;                  return False;
62          }          }
63    
64          in_uint8s(s, 1); /* pad */          in_uint8s(s, 1);        /* pad */
65          in_uint16_be(s, length);          in_uint16_be(s, length);
66    
67          s = tcp_recv(length - 4);          s = tcp_recv(length - 4);
68          if (s == NULL)          if (s == NULL)
69                  return False;                  return False;
70    
71          in_uint8s(s, 1); /* hdrlen */          in_uint8s(s, 1);        /* hdrlen */
72          in_uint8(s, *code);          in_uint8(s, *code);
73    
74          if (*code == ISO_PDU_DT)          if (*code == ISO_PDU_DT)
75          {          {
76                  in_uint8s(s, 1); /* eot */                  in_uint8s(s, 1);        /* eot */
77                  return s;                  return s;
78          }          }
79    
80          in_uint8s(s, 5); /* dst_ref, src_ref, class */          in_uint8s(s, 5);        /* dst_ref, src_ref, class */
81          return s;          return s;
82  }  }
83    
84  /* Initialise ISO transport data packet */  /* Initialise ISO transport data packet */
85  STREAM iso_init(int length)  STREAM
86    iso_init(int length)
87  {  {
88          STREAM s;          STREAM s;
89    
# Line 91  STREAM iso_init(int length) Line 94  STREAM iso_init(int length)
94  }  }
95    
96  /* Send an ISO data PDU */  /* Send an ISO data PDU */
97  void iso_send(STREAM s)  void
98    iso_send(STREAM s)
99  {  {
100          uint16 length;          uint16 length;
101    
102          s_pop_layer(s, iso_hdr);          s_pop_layer(s, iso_hdr);
103          length = s->end - s->p;          length = s->end - s->p;
104    
105          out_uint8(s, 3); /* version */          out_uint8(s, 3);        /* version */
106          out_uint8(s, 0); /* reserved */          out_uint8(s, 0);        /* reserved */
107          out_uint16_be(s, length);          out_uint16_be(s, length);
108    
109          out_uint8(s, 2);  /* hdrlen */          out_uint8(s, 2);        /* hdrlen */
110          out_uint8(s, ISO_PDU_DT); /* code */          out_uint8(s, ISO_PDU_DT);       /* code */
111          out_uint8(s, 0x80); /* eot */          out_uint8(s, 0x80);     /* eot */
112    
113          tcp_send(s);          tcp_send(s);
114  }  }
115    
116  /* Receive ISO transport data packet */  /* Receive ISO transport data packet */
117  STREAM iso_recv()  STREAM
118    iso_recv()
119  {  {
120          STREAM s;          STREAM s;
121          uint8 code;          uint8 code;
# Line 126  STREAM iso_recv() Line 131  STREAM iso_recv()
131  }  }
132    
133  /* Establish a connection up to the ISO layer */  /* Establish a connection up to the ISO layer */
134  BOOL iso_connect(char *server)  BOOL
135    iso_connect(char *server)
136  {  {
137          uint8 code;          uint8 code;
138    
# Line 146  BOOL iso_connect(char *server) Line 152  BOOL iso_connect(char *server)
152  }  }
153    
154  /* Disconnect from the ISO layer */  /* Disconnect from the ISO layer */
155  void iso_disconnect()  void
156    iso_disconnect()
157  {  {
158          iso_send_msg(ISO_PDU_DR);          iso_send_msg(ISO_PDU_DR);
159          tcp_disconnect();          tcp_disconnect();

Legend:
Removed from v.10  
changed lines
  Added in v.25

  ViewVC Help
Powered by ViewVC 1.1.26