lcp.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * lcp.h - Link Control Protocol definitions.
  3. *
  4. * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. *
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in
  15. * the documentation and/or other materials provided with the
  16. * distribution.
  17. *
  18. * 3. The name "Carnegie Mellon University" must not be used to
  19. * endorse or promote products derived from this software without
  20. * prior written permission. For permission or any legal
  21. * details, please contact
  22. * Office of Technology Transfer
  23. * Carnegie Mellon University
  24. * 5000 Forbes Avenue
  25. * Pittsburgh, PA 15213-3890
  26. * (412) 268-4387, fax: (412) 268-7395
  27. * tech-transfer@andrew.cmu.edu
  28. *
  29. * 4. Redistributions of any form whatsoever must retain the following
  30. * acknowledgment:
  31. * "This product includes software developed by Computing Services
  32. * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
  33. *
  34. * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
  35. * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  36. * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
  37. * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  38. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
  39. * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
  40. * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  41. *
  42. * $Id: lcp.h,v 1.20 2004/11/14 22:53:42 carlsonj Exp $
  43. */
  44. /*
  45. * Options.
  46. */
  47. #define CI_VENDOR 0 /* Vendor Specific */
  48. #define CI_MRU 1 /* Maximum Receive Unit */
  49. #define CI_ASYNCMAP 2 /* Async Control Character Map */
  50. #define CI_AUTHTYPE 3 /* Authentication Type */
  51. #define CI_QUALITY 4 /* Quality Protocol */
  52. #define CI_MAGICNUMBER 5 /* Magic Number */
  53. #define CI_PCOMPRESSION 7 /* Protocol Field Compression */
  54. #define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */
  55. #define CI_FCSALTERN 9 /* FCS-Alternatives */
  56. #define CI_SDP 10 /* Self-Describing-Pad */
  57. #define CI_NUMBERED 11 /* Numbered-Mode */
  58. #define CI_CALLBACK 13 /* callback */
  59. #define CI_MRRU 17 /* max reconstructed receive unit; multilink */
  60. #define CI_SSNHF 18 /* short sequence numbers for multilink */
  61. #define CI_EPDISC 19 /* endpoint discriminator */
  62. #define CI_MPPLUS 22 /* Multi-Link-Plus-Procedure */
  63. #define CI_LDISC 23 /* Link-Discriminator */
  64. #define CI_LCPAUTH 24 /* LCP Authentication */
  65. #define CI_COBS 25 /* Consistent Overhead Byte Stuffing */
  66. #define CI_PREFELIS 26 /* Prefix Elision */
  67. #define CI_MPHDRFMT 27 /* MP Header Format */
  68. #define CI_I18N 28 /* Internationalization */
  69. #define CI_SDL 29 /* Simple Data Link */
  70. /*
  71. * LCP-specific packet types (code numbers).
  72. */
  73. #define PROTREJ 8 /* Protocol Reject */
  74. #define ECHOREQ 9 /* Echo Request */
  75. #define ECHOREP 10 /* Echo Reply */
  76. #define DISCREQ 11 /* Discard Request */
  77. #define IDENTIF 12 /* Identification */
  78. #define TIMEREM 13 /* Time Remaining */
  79. /* Value used as data for CI_CALLBACK option */
  80. #define CBCP_OPT 6 /* Use callback control protocol */
  81. /*
  82. * The state of options is described by an lcp_options structure.
  83. */
  84. typedef struct lcp_options {
  85. bool passive; /* Don't die if we don't get a response */
  86. bool silent; /* Wait for the other end to start first */
  87. bool restart; /* Restart vs. exit after close */
  88. bool neg_mru; /* Negotiate the MRU? */
  89. bool neg_asyncmap; /* Negotiate the async map? */
  90. bool neg_upap; /* Ask for UPAP authentication? */
  91. bool neg_chap; /* Ask for CHAP authentication? */
  92. bool neg_eap; /* Ask for EAP authentication? */
  93. bool neg_magicnumber; /* Ask for magic number? */
  94. bool neg_pcompression; /* HDLC Protocol Field Compression? */
  95. bool neg_accompression; /* HDLC Address/Control Field Compression? */
  96. bool neg_lqr; /* Negotiate use of Link Quality Reports */
  97. bool neg_cbcp; /* Negotiate use of CBCP */
  98. bool neg_mrru; /* negotiate multilink MRRU */
  99. bool neg_ssnhf; /* negotiate short sequence numbers */
  100. bool neg_endpoint; /* negotiate endpoint discriminator */
  101. int mru; /* Value of MRU */
  102. int mrru; /* Value of MRRU, and multilink enable */
  103. u_char chap_mdtype; /* which MD types (hashing algorithm) */
  104. u_int32_t asyncmap; /* Value of async map */
  105. u_int32_t magicnumber;
  106. int numloops; /* Number of loops during magic number neg. */
  107. u_int32_t lqr_period; /* Reporting period for LQR 1/100ths second */
  108. struct epdisc endpoint; /* endpoint discriminator */
  109. } lcp_options;
  110. extern fsm lcp_fsm[];
  111. extern lcp_options lcp_wantoptions[];
  112. extern lcp_options lcp_gotoptions[];
  113. extern lcp_options lcp_allowoptions[];
  114. extern lcp_options lcp_hisoptions[];
  115. #define DEFMRU 1500 /* Try for this */
  116. #define MINMRU 128 /* No MRUs below this */
  117. #define MAXMRU 16384 /* Normally limit MRU to this */
  118. void lcp_open __P((int));
  119. void lcp_close __P((int, char *));
  120. void lcp_lowerup __P((int));
  121. void lcp_lowerdown __P((int));
  122. void lcp_sprotrej __P((int, u_char *, int)); /* send protocol reject */
  123. extern struct protent lcp_protent;
  124. /* Default number of times we receive our magic number from the peer
  125. before deciding the link is looped-back. */
  126. #define DEFLOOPBACKFAIL 10