Ensure that struct sockaddr is long enough...
authorMichael Brown <mcb30@etherboot.org>
Thu, 18 Jan 2007 03:28:29 +0000 (03:28 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 18 Jan 2007 03:28:29 +0000 (03:28 +0000)
src/include/gpxe/socket.h
src/include/gpxe/tcpip.h

index a89b3af..44322f2 100644 (file)
@@ -14,6 +14,9 @@
 /** A socket address family */
 typedef uint16_t sa_family_t;
 
+/** Length of a @c struct @c sockaddr */
+#define SA_LEN 32
+
 /**
  * Generalized socket address structure
  *
@@ -26,6 +29,13 @@ struct sockaddr {
         * This is an AF_XXX constant.
         */
         sa_family_t sa_family;
+       /** Padding
+        *
+        * This ensures that a struct @c sockaddr_tcpip is large
+        * enough to hold a socket address for any TCP/IP address
+        * family.
+        */
+       char pad[ SA_LEN - sizeof ( sa_family_t ) ];
 };
 
 #endif /* _GPXE_SOCKET_H */
index 2508d5f..ec708bc 100644 (file)
@@ -21,9 +21,6 @@ struct net_device;
  */
 #define TCPIP_EMPTY_CSUM 0xffff
 
-/** Length of a @c struct @c sockaddr_tcpip */
-#define SA_TCPIP_LEN 32
-
 /**
  * TCP/IP socket address
  *
@@ -41,7 +38,8 @@ struct sockaddr_tcpip {
         * enough to hold a socket address for any TCP/IP address
         * family.
         */
-       char pad[SA_TCPIP_LEN - sizeof ( sa_family_t ) - sizeof ( uint16_t )];
+       char pad[ sizeof ( struct sockaddr ) -
+                 ( sizeof ( sa_family_t ) + sizeof ( uint16_t ) ) ];
 };
 
 /**