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

操作系统开发

开发平台:

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 (*usr_post_init)() = NULL;         // EE 2001.5.24
  17. void sock_exit( void )
  18. {
  19.     if (_initialized) // S. Lawson
  20.        tcp_shutdown();
  21.     _initialized = 0; // S. Lawson
  22. }
  23. // S. Lawson - keep an exiting sock_init()
  24. void sock_init(void)
  25. {
  26.     int r;
  27.     r=sock_init_noexit();
  28.     if (r) exit(r);
  29. }
  30. int sock_init_noexit(void ) // S. Lawson
  31. {
  32.     int r; // S. Lawson
  33.     if (_initialized) return 0; // S. Lawson
  34. // S. Lawson    tcp_init(); /* must precede tcp_config because we need eth addr */
  35.     r=tcp_init_noexit(); /* (S. Lawson) must precede tcp_config because we need eth addr */
  36.     if (r) return r; // S. Lawson
  37.     _initialized=1; // S. Lawson
  38.     atexit(sock_exit); /* must not precede tcp_init() incase no PD */
  39.     tcp_cbrk( 0x10 ); /* allow control breaks, give message */
  40. #ifndef SKIPINI // S. Lawson
  41.     if (tcp_config( NULL )) { /* if no config file use BOOTP w/broadcast */
  42. #endif // SKIPINI  S. Lawson
  43. _bootpon = 1;
  44. outs("Configuring through BOOTP/DHCPrn");    // S. Lawson
  45. #ifndef SKIPINI // S. Lawson
  46.     }
  47. #endif // SKIPINI  S. Lawson
  48.     if (_bootpon) /* non-zero if we use bootp */
  49. if (_dobootp()) {
  50.     outs("BOOTP/DHCP failedrn");             // S. Lawson
  51.     if ( !_survivebootp )
  52.        return 3;        // S. Lawson
  53. // S. Lawson exit( 3 );
  54.         }
  55.     /* EE 2001.5.24 */
  56.     if ( usr_post_init )
  57.         (*usr_post_init)();
  58.     return 0;        // S. Lawson
  59. }