Make flags more efficient.
authorMichael Brown <mcb30@etherboot.org>
Wed, 19 Apr 2006 01:53:49 +0000 (01:53 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 19 Apr 2006 01:53:49 +0000 (01:53 +0000)
Add 'raw' net_addr facility (needed for ARP).

src/include/gpxe/llh.h

index 48c9c46..f600781 100644 (file)
 /** Maximum length of a network-layer address */
 #define MAX_NET_ADDR_LEN 4
 
+/* Network-layer address may be required to contain a raw link-layer address */
+#if MAX_NET_ADDR_LEN < MAX_LLH_ADDR_LEN
+#undef MAX_NET_ADDR_LEN
+#define MAX_NET_ADDR_LEN MAX_LLH_ADDR_LEN
+#endif
+
 /** A media-independent link-layer header
  *
  * This structure represents a generic link-layer header.  It never
@@ -31,16 +37,12 @@ struct gpxehdr {
         * ETH_P_XXX constant, in network-byte order.
         */
        uint16_t net_proto;
-       /** Broadcast flag
-        *
-        * Filled in only on outgoing packets.
-        */
-       int broadcast : 1;
-       /** Multicast flag
+       /** Flags
         *
-        * Filled in only on outgoing packets.
+        * Filled in only on outgoing packets.  Value is the
+        * bitwise-OR of zero or more GPXE_FL_XXX constants.
         */
-       int multicast : 1;
+       uint8_t flags;
        /** Network-layer address length 
         *
         * Filled in only on outgoing packets.
@@ -53,4 +55,9 @@ struct gpxehdr {
        uint8_t net_addr[MAX_NET_ADDR_LEN];
 } __attribute__ (( packed ));
 
+/* Media-independent link-layer header flags */
+#define GPXE_FL_BROADCAST      0x01
+#define GPXE_FL_MULTICAST      0x02
+#define GPXE_FL_RAW            0x04
+
 #endif /* _LLH_H */