Merge branch 'patch' of ssh://github.com/svost/novacoin into svost-patch
[novacoin.git] / src / ministun.h
index 8b19df8..d2ad738 100644 (file)
 #define STUN_COUNT 3
 #define STUN_TIMEOUT 3
 
-typedef struct { unsigned int id[4]; } __attribute__((packed)) stun_trans_id;
+#ifndef _MSC_VER
+    typedef struct { unsigned int id[4]; } __attribute__((packed)) stun_trans_id;
 
-struct stun_header {
-    unsigned short msgtype;
-    unsigned short msglen;
-    stun_trans_id  id;
-    unsigned char  ies[0];
-} __attribute__((packed));
+    struct stun_header {
+        unsigned short msgtype;
+        unsigned short msglen;
+        stun_trans_id id;
+    } __attribute__((packed));
 
-struct stun_attr {
-    unsigned short attr;
-    unsigned short len;
-    unsigned char  value[0];
-} __attribute__((packed));
+    struct stun_attr {
+        unsigned short attr;
+        unsigned short len;
+    } __attribute__((packed));
 
-/*
- * The format normally used for addresses carried by STUN messages.
- */
-struct stun_addr {
-    unsigned char  unused;
-    unsigned char  family;
-    unsigned short port;
-    unsigned int   addr;
-} __attribute__((packed));
+    /*
+    * The format normally used for addresses carried by STUN messages.
+    */
+
+    struct stun_addr {
+        unsigned char unused;
+        unsigned char family;
+        unsigned short port;
+        unsigned int addr;
+    } __attribute__((packed));
+#else
+    typedef struct { unsigned int id[4]; } stun_trans_id;
+
+#pragma pack(push, 1)    
+    struct stun_header {
+        unsigned short msgtype;
+        unsigned short msglen;
+        stun_trans_id id;
+    };
+#pragma pack(pop)
+
+#pragma pack(push, 1)
+    struct stun_attr {
+        unsigned short attr;
+        unsigned short len;
+    };
+#pragma pack(pop)
+
+    /*
+    * The format normally used for addresses carried by STUN messages.
+    */
+#pragma pack(push, 1)
+    struct stun_addr {
+        unsigned char unused;
+        unsigned char family;
+        unsigned short port;
+        unsigned int addr;
+    };
+#pragma pack(pop)
+#endif
 
 #define STUN_IGNORE  (0)
 #define STUN_ACCEPT  (1)