/[rdesktop]/sourceforge.net/trunk/rdesktop/mcs.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/mcs.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 24 by matty, Sat Jan 6 03:12:10 2001 UTC
# Line 33  static BOOL ber_parse_header(STREAM s, i Line 33  static BOOL ber_parse_header(STREAM s, i
33          }          }
34          else          else
35          {          {
36                  in_uint8(s, tag)          in_uint8(s, tag)}
         }  
37    
38          if (tag != tagval)          if (tag != tagval)
39          {          {
# Line 51  static BOOL ber_parse_header(STREAM s, i Line 50  static BOOL ber_parse_header(STREAM s, i
50                  while (len--)                  while (len--)
51                          next_be(s, *length);                          next_be(s, *length);
52          }          }
53          else *length = len;          else
54                    *length = len;
55    
56          return s_check(s);          return s_check(s);
57  }  }
# Line 73  static void ber_out_header(STREAM s, int Line 73  static void ber_out_header(STREAM s, int
73                  out_uint8(s, 0x82);                  out_uint8(s, 0x82);
74                  out_uint16_be(s, length);                  out_uint16_be(s, length);
75          }          }
76          else out_uint8(s, length);          else
77                    out_uint8(s, length);
78  }  }
79    
80  /* Output an ASN.1 BER integer */  /* Output an ASN.1 BER integer */
# Line 85  static void ber_out_integer(STREAM s, in Line 86  static void ber_out_integer(STREAM s, in
86    
87  /* Output a DOMAIN_PARAMS structure (ASN.1 BER) */  /* Output a DOMAIN_PARAMS structure (ASN.1 BER) */
88  static void mcs_out_domain_params(STREAM s, int max_channels, int max_users,  static void mcs_out_domain_params(STREAM s, int max_channels, int max_users,
89                             int max_tokens, int max_pdusize)                                    int max_tokens, int max_pdusize)
90  {  {
91          ber_out_header(s, MCS_TAG_DOMAIN_PARAMS, 32);          ber_out_header(s, MCS_TAG_DOMAIN_PARAMS, 32);
92          ber_out_integer(s, max_channels);          ber_out_integer(s, max_channels);
93          ber_out_integer(s, max_users);          ber_out_integer(s, max_users);
94          ber_out_integer(s, max_tokens);          ber_out_integer(s, max_tokens);
95          ber_out_integer(s, 1); /* num_priorities */          ber_out_integer(s, 1);  /* num_priorities */
96          ber_out_integer(s, 0); /* min_throughput */          ber_out_integer(s, 0);  /* min_throughput */
97          ber_out_integer(s, 1); /* max_height */          ber_out_integer(s, 1);  /* max_height */
98          ber_out_integer(s, max_pdusize);          ber_out_integer(s, max_pdusize);
99          ber_out_integer(s, 2); /* ver_protocol */          ber_out_integer(s, 2);  /* ver_protocol */
100  }  }
101    
102  /* Parse a DOMAIN_PARAMS structure (ASN.1 BER) */  /* Parse a DOMAIN_PARAMS structure (ASN.1 BER) */
# Line 113  static BOOL mcs_parse_domain_params(STRE Line 114  static BOOL mcs_parse_domain_params(STRE
114  static void mcs_send_connect_initial(STREAM mcs_data)  static void mcs_send_connect_initial(STREAM mcs_data)
115  {  {
116          int datalen = mcs_data->end - mcs_data->data;          int datalen = mcs_data->end - mcs_data->data;
117          int length = 7 + 3*34 + 4 + datalen;          int length = 7 + 3 * 34 + 4 + datalen;
118          STREAM s;          STREAM s;
119    
120          s = iso_init(length + 5);          s = iso_init(length + 5);
121    
122          ber_out_header(s, MCS_CONNECT_INITIAL, length);          ber_out_header(s, MCS_CONNECT_INITIAL, length);
123          ber_out_header(s, BER_TAG_OCTET_STRING, 0); /* calling domain */          ber_out_header(s, BER_TAG_OCTET_STRING, 0);     /* calling domain */
124          ber_out_header(s, BER_TAG_OCTET_STRING, 0); /* called domain */          ber_out_header(s, BER_TAG_OCTET_STRING, 0);     /* called domain */
125    
126          ber_out_header(s, BER_TAG_BOOLEAN, 1);          ber_out_header(s, BER_TAG_BOOLEAN, 1);
127          out_uint8(s, 0xff); /* upward flag */          out_uint8(s, 0xff);     /* upward flag */
128    
129          mcs_out_domain_params(s, 2, 2, 0, 0xffff); /* target params */          mcs_out_domain_params(s, 2, 2, 0, 0xffff);      /* target params */
130          mcs_out_domain_params(s, 1, 1, 1, 0x420); /* min params */          mcs_out_domain_params(s, 1, 1, 1, 0x420);       /* min params */
131          mcs_out_domain_params(s, 0xffff, 0xfc17, 0xffff, 0xffff); /* max params */          mcs_out_domain_params(s, 0xffff, 0xfc17, 0xffff, 0xffff);       /* max params */
132    
133          ber_out_header(s, BER_TAG_OCTET_STRING, datalen);          ber_out_header(s, BER_TAG_OCTET_STRING, datalen);
134          out_uint8p(s, mcs_data->data, datalen);          out_uint8p(s, mcs_data->data, datalen);
# Line 158  static BOOL mcs_recv_connect_response(ST Line 159  static BOOL mcs_recv_connect_response(ST
159          }          }
160    
161          ber_parse_header(s, BER_TAG_INTEGER, &length);          ber_parse_header(s, BER_TAG_INTEGER, &length);
162          in_uint8s(s, length); /* connect id */          in_uint8s(s, length);   /* connect id */
163          mcs_parse_domain_params(s);          mcs_parse_domain_params(s);
164    
165          ber_parse_header(s, BER_TAG_OCTET_STRING, &length);          ber_parse_header(s, BER_TAG_OCTET_STRING, &length);
# Line 183  static void mcs_send_edrq() Line 184  static void mcs_send_edrq()
184          s = iso_init(5);          s = iso_init(5);
185    
186          out_uint8(s, (MCS_EDRQ << 2));          out_uint8(s, (MCS_EDRQ << 2));
187          out_uint16_be(s, 1); /* height */          out_uint16_be(s, 1);    /* height */
188          out_uint16_be(s, 1); /* interval */          out_uint16_be(s, 1);    /* interval */
189    
190          s_mark_end(s);          s_mark_end(s);
191          iso_send(s);          iso_send(s);
# Line 272  static BOOL mcs_recv_cjcf() Line 273  static BOOL mcs_recv_cjcf()
273                  return False;                  return False;
274          }          }
275    
276          in_uint8s(s, 4); /* mcs_userid, req_chanid */          in_uint8s(s, 4);        /* mcs_userid, req_chanid */
277          if (opcode & 2)          if (opcode & 2)
278                  in_uint8s(s, 2); /* join_chanid */                  in_uint8s(s, 2);        /* join_chanid */
279    
280          return s_check_end(s);          return s_check_end(s);
281  }  }
# Line 302  void mcs_send(STREAM s) Line 303  void mcs_send(STREAM s)
303          out_uint8(s, (MCS_SDRQ << 2));          out_uint8(s, (MCS_SDRQ << 2));
304          out_uint16_be(s, mcs_userid);          out_uint16_be(s, mcs_userid);
305          out_uint16_be(s, MCS_GLOBAL_CHANNEL);          out_uint16_be(s, MCS_GLOBAL_CHANNEL);
306          out_uint8(s, 0x70); /* flags */          out_uint8(s, 0x70);     /* flags */
307          out_uint16_be(s, length);          out_uint16_be(s, length);
308    
309          iso_send(s);          iso_send(s);
# Line 329  STREAM mcs_recv() Line 330  STREAM mcs_recv()
330                  return NULL;                  return NULL;
331          }          }
332    
333          in_uint8s(s, 5); /* userid, chanid, flags */          in_uint8s(s, 5);        /* userid, chanid, flags */
334          in_uint8(s, length);          in_uint8(s, length);
335          if (length & 0x80)          if (length & 0x80)
336                  in_uint8s(s, 1); /* second byte of length */                  in_uint8s(s, 1);        /* second byte of length */
337    
338          return s;          return s;
339  }  }
# Line 363  BOOL mcs_connect(char *server, STREAM mc Line 364  BOOL mcs_connect(char *server, STREAM mc
364    
365          return True;          return True;
366    
367   error:        error:
368          iso_disconnect();          iso_disconnect();
369          return False;          return False;
370  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.26