Mildly ugly hack to force correct linkage.
authorMichael Brown <mcb30@etherboot.org>
Thu, 28 Jun 2007 17:06:25 +0000 (18:06 +0100)
committerMichael Brown <mcb30@etherboot.org>
Thu, 28 Jun 2007 17:06:25 +0000 (18:06 +0100)
src/include/gpxe/socket.h
src/net/tcp.c
src/net/udp.c

index d47369a..9c7afb8 100644 (file)
  *
  * @{
  */
-#define SOCK_STREAM    1       /**< Connection-based, reliable streams */
-#define SOCK_DGRAM     2       /**< Connectionless, unreliable streams */
+
+/** Connection-based, reliable streams */
+#define SOCK_STREAM    ( ( int ) TCP_SOCK_STREAM )
+extern char TCP_SOCK_STREAM[];
+
+/** Connectionless, unreliable streams */
+#define SOCK_DGRAM     ( ( int ) UDP_SOCK_DGRAM )
+extern char UDP_SOCK_DGRAM[];
+
 /** @} */
 
 /**
  */
 static inline __attribute__ (( always_inline )) const char *
 socket_semantics_name ( int semantics ) {
-       switch ( semantics ) {
-       case SOCK_STREAM:       return "SOCK_STREAM";
-       case SOCK_DGRAM:        return "SOCK_DGRAM";
-       default:                return "SOCK_UNKNOWN";
+       /* Cannot use a switch() because of the {TCP_UDP}_SOCK_XXX hack */
+       if ( semantics == SOCK_STREAM ) {
+               return "SOCK_STREAM";
+       } else if ( semantics == SOCK_DGRAM ) {
+               return "SOCK_DGRAM";
+       } else {
+               return "SOCK_UNKNOWN";
        }
 }
 
index 00c7b74..ebfaaa4 100644 (file)
@@ -973,6 +973,8 @@ struct socket_opener tcp_socket_opener __socket_opener = {
        .open           = tcp_open,
 };
 
+char TCP_SOCK_STREAM[1];
+
 /**
  * Open TCP URI
  *
index c99a3eb..c6216d8 100644 (file)
@@ -436,6 +436,8 @@ struct socket_opener udp_socket_opener __socket_opener = {
        .open           = udp_open,
 };
 
+char UDP_SOCK_DGRAM[1];
+
 /**
  * Open UDP URI
  *