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

操作系统开发

开发平台:

DOS

  1. /*
  2.  * Bootstrap Protocol (BOOTP)
  3.  * Based on RFC 951.
  4.  */
  5. #define BOOTREQUEST  1 /* bootp.bp_op */
  6. #define BOOTREPLY 2
  7. // S. Lawson - DHCP definitions
  8. #define DHCP_VN_REQIP   50
  9. #define DHCP_VN_TYPE    53
  10. #define DHCP_VN_SRVRID  54
  11. #define DHCP_VN_OPTS 55
  12. #define DHCP_VN_T1TIME  58
  13. #define DHCP_VN_T2TIME  59
  14. #define DHCP_TY_DSC      1
  15. #define DHCP_TY_OFR      2
  16. #define DHCP_TY_REQ      3
  17. #define DHCP_TY_ACK      5
  18. #define DHCP_TY_NAK      6
  19. /*
  20.  * structure for send and receives
  21.  */
  22. typedef struct bootp {
  23. byte  bp_op; /* packet op code / message type. */
  24. byte  bp_htype; /* hardware address type, 1 = 10 mb ethernet */
  25. byte  bp_hlen; /* hardware address len, eg '6' for 10mb eth */
  26. byte  bp_hops; /* client sets to zero, optionally used by
  27.    gateways in cross-gateway booting. */
  28. longword bp_xid; /* transaction ID, a random number */
  29. word  bp_secs; /* filled in by client, seconds elapsed since
  30.    client started trying to boot. */
  31. word  bp_spare;
  32. longword bp_ciaddr; /* client IP address filled in by client if known*/
  33. longword bp_yiaddr; /* 'your' (client) IP address
  34.    filled by server if client doesn't know */
  35. longword bp_siaddr; /* server IP address returned in bootreply */
  36. longword bp_giaddr; /* gateway IP address,
  37.    used in optional cross-gateway booting. */
  38. byte  bp_chaddr[16]; /* client hardware address, filled by client */
  39. byte  bp_sname[64]; /* optional server host name, null terminated*/
  40. byte  bp_file[128]; /* boot file name, null terminated string
  41.    'generic' name or null in bootrequest,
  42.    fully qualified directory-path
  43.    name in bootreply. */
  44. // S. Lawson - extend for DHCP
  45. // byte  bp_vend[ 64]; /* optional vendor-specific area */
  46. byte  bp_vend[312]; /* optional vendor-specific area */
  47. };
  48. extern struct bootp _bootp;
  49. extern word sock_inactive;
  50. /*
  51.  * UDP port numbers, server and client.
  52.  */
  53. #define IPPORT_BOOTPS 67
  54. #define IPPORT_BOOTPC 68
  55. /******** the following is stolen from NCSA which came from CUTCP *********/
  56. /* I have not implemented these, but someone may wish to in the future so */
  57. /* I kept them around.                                                    */
  58. /**************************************************************************/
  59. /*
  60.  * "vendor" data permitted for Stanford boot clients.
  61.  */
  62. struct vend {
  63. byte   v_magic[4]; /* magic number */
  64. longword v_flags; /* flags/opcodes, etc. */
  65. byte   v_unused[56]; /* currently unused */
  66. };
  67. #define VM_STANFORD "STAN" /* v_magic for Stanford */
  68. /*#define VM_RFC1048      "143202123143"            /* 94.11.20 */
  69. /* v_flags values */
  70. #define VF_PCBOOT 1 /* an IBMPC or Mac wants environment info */
  71. #define VF_HELP 2 /* help me, I'm not registered */
  72. #define TAG_BOOTFILE_SIZE       13     /* tag used by vend fields rfc 1048 */