]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netat/ddp.h
xnu-792.22.5.tar.gz
[apple/xnu.git] / bsd / netat / ddp.h
index e2e8b3909d64a9e0922ff09bea64920e0122d45f..0554ddf0e4950fc4a13285967c8b9c2eb787d404 100644 (file)
 /* DDP extended header packet format */
 
 typedef struct {
-        unsigned   unused:2,
-                  hopcount:4,
-                  length:10;           /* Datagram length */
+#if BYTE_ORDER == BIG_ENDIAN
+               unsigned        unused:2,
+                           hopcount:4,         /* hop count/len high order  */
+                               length_H:2;     
+#endif
+#if BYTE_ORDER == LITTLE_ENDIAN
+               unsigned        length_H:2,
+                                       hopcount:4,
+                                       unused:2;
+#endif
+        u_char    length_L;                    /* len low order */
         ua_short   checksum;           /* Checksum */
         at_net     dst_net;            /* Destination network number */
         at_net     src_net;            /* Source network number */
@@ -78,12 +86,17 @@ typedef struct {
         at_node    src_node;           /* Source node ID */
         at_socket  dst_socket;                 /* Destination socket number */
         at_socket  src_socket;                 /* Source socket number */
-        u_char    type;                /* Protocol type */
+        u_char    type;                        /* Protocol type */
         char       data[DDP_DATA_SIZE];
 } at_ddp_t;
 
-#define        DDPLEN_ASSIGN(ddp, len)         ddp->length = len
-#define        DDPLEN_VALUE(ddp)               ddp->length
+
+#define        DDPLEN_ASSIGN(ddp, len)         \
+               ddp->length_H = 0x03 & (len >> 8); \
+               ddp->length_L = len & 0xff;
+               
+#define        DDPLEN_VALUE(ddp)                       \
+               (((u_short)ddp->length_H) << 8) + ddp->length_L
 
 /* DDP module statistics and configuration */