SOCK_INI.C
上传用户:better800
上传日期:2022-06-13
资源大小:1853k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

DOS

  1. /*
  2.  * sock_init - easy way to guarentee:
  3.  * - card is ready
  4.  * - shutdown is handled
  5.  * - cbreaks are handled
  6.  *      - config file is read
  7.  * - bootp is run
  8.  *
  9.  * 0.1 : May 2, 1991  Erick - reorganized operations
  10.  */
  11. #include <copyright.h>
  12. #include <wattcp.h>
  13. #include <stdlib.h>
  14. int _survivebootp = 0;
  15. static char _initialized = 0; // S. Lawson
  16. void sock_exit( void )
  17. {
  18.     if (_initialized) // S. Lawson
  19.        tcp_shutdown();
  20.     _initialized = 0; // S. Lawson
  21. }
  22. // S. Lawson - keep an exiting sock_init()
  23. void sock_init(void)
  24. {
  25.     int r;
  26.     r=sock_init_noexit();
  27.     if (r) exit(r);
  28. }
  29. int sock_init_noexit(void ) // S. Lawson
  30. {
  31.     int r; // S. Lawson
  32.     if (_initialized) return 0; // S. Lawson
  33. // S. Lawson    tcp_init(); /* must precede tcp_config because we need eth addr */
  34.     r=tcp_init_noexit(); /* (S. Lawson) must precede tcp_config because we need eth addr */
  35.     if (r) return r; // S. Lawson
  36.     _initialized=1; // S. Lawson
  37.     atexit(sock_exit); /* must not precede tcp_init() incase no PD */
  38.     tcp_cbrk( 0x10 ); /* allow control breaks, give message */
  39. #ifndef SKIPINI // S. Lawson
  40.     if (tcp_config( NULL )) { /* if no config file use BOOTP w/broadcast */
  41. #endif // SKIPINI  S. Lawson
  42. _bootpon = 1;
  43. outs("Configuring through BOOTP/DHCPrn");    // S. Lawson
  44. #ifndef SKIPINI // S. Lawson
  45.     }
  46. #endif // SKIPINI  S. Lawson
  47.     if (_bootpon) /* non-zero if we use bootp */
  48. if (_dobootp()) {
  49.     outs("BOOTP/DHCP failedrn");             // S. Lawson
  50.     if ( !_survivebootp )
  51.        return 3;        // S. Lawson
  52. // S. Lawson exit( 3 );
  53. }
  54.     return 0;        // S. Lawson
  55. }