Annotation of lucent/sys/src/boot/pc/ip.h, revision 1.1

1.1     ! root        1: typedef struct Udphdr Udphdr;
        !             2: struct Udphdr
        !             3: {
        !             4:        uchar   d[6];           /* Ethernet destination */
        !             5:        uchar   s[6];           /* Ethernet source */
        !             6:        uchar   type[2];        /* Ethernet packet type */
        !             7: 
        !             8:        uchar   vihl;           /* Version and header length */
        !             9:        uchar   tos;            /* Type of service */
        !            10:        uchar   length[2];      /* packet length */
        !            11:        uchar   id[2];          /* Identification */
        !            12:        uchar   frag[2];        /* Fragment information */
        !            13: 
        !            14:        /* Udp pseudo ip really starts here */
        !            15:        uchar   ttl;    
        !            16:        uchar   udpproto;       /* Protocol */
        !            17:        uchar   udpplen[2];     /* Header plus data length */
        !            18:        uchar   udpsrc[4];      /* Ip source */
        !            19:        uchar   udpdst[4];      /* Ip destination */
        !            20:        uchar   udpsport[2];    /* Source port */
        !            21:        uchar   udpdport[2];    /* Destination port */
        !            22:        uchar   udplen[2];      /* data length */
        !            23:        uchar   udpcksum[2];    /* Checksum */
        !            24: };
        !            25: 
        !            26: typedef struct Etherhdr Etherhdr;
        !            27: struct Etherhdr
        !            28: {
        !            29:        uchar   d[6];
        !            30:        uchar   s[6];
        !            31:        uchar   type[2];
        !            32: 
        !            33:        /* Now we have the ip fields */
        !            34:        uchar   vihl;           /* Version and header length */
        !            35:        uchar   tos;            /* Type of service */
        !            36:        uchar   length[2];      /* packet length */
        !            37:        uchar   id[2];          /* Identification */
        !            38:        uchar   frag[2];        /* Fragment information */
        !            39:        uchar   ttl;            /* Time to live */
        !            40:        uchar   proto;          /* Protocol */
        !            41:        uchar   cksum[2];       /* Header checksum */
        !            42:        uchar   src[4];         /* Ip source */
        !            43:        uchar   dst[4];         /* Ip destination */
        !            44: };
        !            45: 
        !            46: enum
        !            47: {
        !            48:        IP_VER          = 0x40,
        !            49:        IP_HLEN         = 0x05,                 
        !            50:        UDP_EHSIZE      = 22,
        !            51:        UDP_PHDRSIZE    = 12,
        !            52:        UDP_HDRSIZE     = 20,
        !            53:        ETHER_HDR       = 14,
        !            54:        IP_UDPPROTO     = 17,
        !            55:        ET_IP           = 0x800,
        !            56:        Bcastip         = 0xffffffff,
        !            57:        BPportsrc       = 68,
        !            58:        BPportdst       = 67,
        !            59:        TFTPport        = 69,
        !            60:        Timeout         = 5000, /* milliseconds */
        !            61:        Bootrequest     = 1,
        !            62:        Bootreply       = 2,
        !            63:        Tftp_READ       = 1,
        !            64:        Tftp_WRITE      = 2,
        !            65:        Tftp_DATA       = 3,
        !            66:        Tftp_ACK        = 4,
        !            67:        Tftp_ERROR      = 5,
        !            68:        Segsize         = 512,
        !            69:        TFTPSZ          = Segsize+10,
        !            70: };
        !            71: 
        !            72: typedef struct Bootp Bootp;
        !            73: struct Bootp
        !            74: {
        !            75:        uchar   op;             /* opcode */
        !            76:        uchar   htype;          /* hardware type */
        !            77:        uchar   hlen;           /* hardware address len */
        !            78:        uchar   hops;           /* hops */
        !            79:        uchar   xid[4];         /* a random number */
        !            80:        uchar   secs[2];        /* elapsed snce client started booting */
        !            81:        uchar   pad[2];
        !            82:        uchar   ciaddr[4];      /* client IP address (client tells server) */
        !            83:        uchar   yiaddr[4];      /* client IP address (server tells client) */
        !            84:        uchar   siaddr[4];      /* server IP address */
        !            85:        uchar   giaddr[4];      /* gateway IP address */
        !            86:        uchar   chaddr[16];     /* client hardware address */
        !            87:        char    sname[64];      /* server host name (optional) */
        !            88:        char    file[128];      /* boot file name */
        !            89:        char    vend[128];      /* vendor-specific goo */
        !            90: };
        !            91: 
        !            92: typedef struct Netaddr Netaddr;
        !            93: struct Netaddr
        !            94: {
        !            95:        ulong   ip;
        !            96:        ushort  port;
        !            97:        char    ea[6];
        !            98: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.