adding crc16 to gnunet_crypto_lib.h
[oweals/gnunet.git] / src / include / gnunet_common.h
index 167187c23e1110df352c65fe6d14c5ad5e8b7a4e..cecc94c9edc5787b9aee02b2ea2bf5e1d5bd97f1 100644 (file)
 /**
  * Version of the API (for entire gnunetutil.so library).
  */
-#define GNUNET_UTIL_VERSION 0x00090000
-
-/**
- * Name used for "services" that are actually command-line
- * programs invoked by the end user.
- */
-#define GNUNET_CLIENT_SERVICE_NAME "client"
+#define GNUNET_UTIL_VERSION 0x00090100
 
 /**
  * Named constants for return values.  The following
@@ -91,6 +85,7 @@
 #  define GNUNET_htole64(x) (x)
 #  define GNUNET_be64toh(x) __bswap_64 (x)
 #  define GNUNET_le64toh(x) (x)
+#endif
 # if __BYTE_ORDER == __BIG_ENDIAN
 #  define GNUNET_htobe16(x) (x)
 #  define GNUNET_htole16(x) __bswap_16 (x)
 #  define GNUNET_htole64(x) __bswap_64 (x)
 #  define GNUNET_be64toh(x) (x)
 #  define GNUNET_le64toh(x) __bswap_64 (x)
-# endif
 #endif
 
 
 
+
 /**
  * gcc-ism to get packed structs.
  */
  */
 #define GNUNET_UNUSED __attribute__((unused))
 
+#if __GNUC__ > 3
+/**
+ * gcc 4.x-ism to pack structures even on W32 (to be used before structs)
+ */
+#define GNUNET_NETWORK_STRUCT_BEGIN \
+  _Pragma("pack(push)") \
+  _Pragma("pack(1)")
+
+/**
+ * gcc 4.x-ism to pack structures even on W32 (to be used after structs)
+ */
+#define GNUNET_NETWORK_STRUCT_END _Pragma("pack(pop)")
+#else
+#ifdef MINGW
+#error gcc 4.x or higher required on W32 systems
+#endif
+/**
+ * Good luck, GNUNET_PACKED should suffice, but this won't work on W32
+ */
+#define GNUNET_NETWORK_STRUCT_BEGIN 
+
+/**
+ * Good luck, GNUNET_PACKED should suffice, but this won't work on W32
+ */
+#define GNUNET_NETWORK_STRUCT_END
+#endif
 
 /* ************************ super-general types *********************** */
 
+GNUNET_NETWORK_STRUCT_BEGIN
+
 /**
  * Header for all communications.
  */
@@ -142,7 +165,7 @@ struct GNUNET_MessageHeader
   uint16_t type GNUNET_PACKED;
 
 };
-
+GNUNET_NETWORK_STRUCT_END
 
 /**
  * @brief 512-bit hashcode
@@ -154,6 +177,8 @@ typedef struct
 GNUNET_HashCode;
 
 
+GNUNET_NETWORK_STRUCT_BEGIN
+
 /**
  * The identity of the host (basically the SHA-512 hashcode of
  * it's public key).
@@ -162,7 +187,7 @@ struct GNUNET_PeerIdentity
 {
   GNUNET_HashCode hashPubKey GNUNET_PACKED;
 };
-
+GNUNET_NETWORK_STRUCT_END
 
 /**
  * Function called with a filename.