gsm: Implement the size checking of the hello packet
[lcr.git] / mncc.h
diff --git a/mncc.h b/mncc.h
index 27c8364..35e16fc 100644 (file)
--- a/mncc.h
+++ b/mncc.h
@@ -1,4 +1,6 @@
 
+#include <stdint.h>
+
 #define MNCC_SETUP_REQ         0x0101
 #define MNCC_SETUP_IND         0x0102
 #define MNCC_SETUP_RSP         0x0103
@@ -56,6 +58,8 @@
 #define GSM_TCHF_FRAME         0x0300
 #define GSM_TCHF_FRAME_EFR     0x0301
 
+#define MNCC_SOCKET_HELLO      0x0400
+
 #define GSM_MAX_FACILITY       128
 #define GSM_MAX_SSVERSION      128
 #define GSM_MAX_USERUSER       128
@@ -144,11 +148,11 @@ enum {
 
 struct gsm_mncc {
        /* context based information */
-       u_int32_t       msg_type;
-       u_int32_t       callref;
+       uint32_t        msg_type;
+       uint32_t        callref;
 
        /* which fields are present */
-       u_int32_t       fields;
+       uint32_t        fields;
 
        /* data derived informations (MNCC_F_ based) */
        struct gsm_mncc_bearer_cap      bearer_cap;
@@ -175,12 +179,28 @@ struct gsm_mncc {
        int             emergency;
        char            imsi[16];
 
+       unsigned char   lchan_type;
        unsigned char   lchan_mode;
 };
 
 struct gsm_data_frame {
-       u_int32_t       msg_type;
-       u_int32_t       callref;
+       uint32_t        msg_type;
+       uint32_t        callref;
        unsigned char   data[0];
 };
 
+#define MNCC_SOCK_VERSION      2
+struct gsm_mncc_hello {
+       uint32_t        msg_type;
+       uint32_t        version;
+
+       /* send the sizes of the structs */
+       uint32_t        mncc_size;
+       uint32_t        data_frame_size;
+
+       /* send some offsets */
+       uint32_t        called_offset;
+       uint32_t        signal_offset;
+       uint32_t        emergency_offset;
+       uint32_t        lchan_type_offset;
+};