GTP1 functionality
diff --git a/gtp/pdp.h b/gtp/pdp.h
index 90a1871..4ef63b3 100644
--- a/gtp/pdp.h
+++ b/gtp/pdp.h
@@ -18,6 +18,7 @@
 #define _PDP_H
 
 #define PDP_MAX 1024             /* Max number of PDP contexts */
+#define PDP_MAXNSAPI 16          /* Max number of NSAPI */
 
 #define PDP_DEBUG 0              /* Print debug information */
 
@@ -52,19 +53,19 @@
 };
 
 
-/* ***********************************************************
+/* *****************************************************************
  * Information storage for each PDP context
  *
- * Information storage for each PDP context is defined in 
- * 23.060 section 13.3 and 03.60. Includes IMSI, MSISDN, APN, 
- * PDP-type, PDP-address (IP address), sequence numbers, charging ID.
- * For the SGSN it also includes radio related mobility
- * information.
- * The following structure is a combination of the storage 
- * requirements for each PDP context for the GGSN and SGSN.
- * It contains both 23.060 as well as 03.60 parameters.
- * Information is stored in the format for information elements
- * described in 29.060 and 09.60.
+ * Information storage for each PDP context is defined in 23.060
+ * section 13.3 and 03.60. Includes IMSI, MSISDN, APN, PDP-type,
+ * PDP-address (IP address), sequence numbers, charging ID.  For the
+ * SGSN it also includes radio related mobility information.
+ *
+ * The following structure is a combination of the storage
+ * requirements for each PDP context for the GGSN and SGSN.  It
+ * contains both 23.060 as well as 03.60 parameters.  Information is
+ * stored in the format for information elements described in 29.060
+ * and 09.60.
  * 31 * 4 + 15 structs +  = 120 + 15 structs ~ 2k / context
  * Structs: IP address 16+4 bytes (6), APN 255 bytes (2)
  * QOS: 255 bytes (3), msisdn 16 bytes (1), 
@@ -85,7 +86,26 @@
  * allocate, free, sort and find pdp_t
  * (newpdp, freepdp, getpdp)
  * Hash tables: TID, IMSI, IP etc.) 
- *************************************************************/
+ *
+ *
+ * Secondary PDP Context Activation Procedure 
+ *
+ * With GTP version 1 it is possible to establish multiple PDP
+ * contexts with the same IP address. With this scheme the first
+ * context is established as normal. Following contexts are
+ * established by referencing one of the allready existing ones.  Each
+ * context is uniquely identified by IMSI and NSAPI. Each context is
+ * allocated an tei_di, but they all share the same tei_c.
+ *
+ * For Delete PDP Context the context is referenced by tei_c and
+ * nsapi. As an option it is possible to include a teardown indicater,
+ * in which case all PDP contexts with the same tei_c (IP address) are
+ * deleted.
+ *
+ * For Update PDP Context the context is normally referenced by tei_c
+ * and nsapi. If moving from GTP0 to GTP1 during an update the context
+ * is referenced instead by IMSI and NSAPI.
+ *****************************************************************/
 
 struct pdp_t {
   /* Parameter determining if this PDP is in use. */
@@ -123,7 +143,6 @@
   struct ul255_t apn_sub;/* The APN received from the HLR. */
   struct ul255_t apn_use;/* The APN Network Identifier currently used. */
   uint8_t     nsapi;    /* Network layer Service Access Point Identifier. (4 bit) */
-  uint8_t     linked_nsapi;  /* (Linked NSAPI) (4 bit) */
   uint16_t    ti;       /* Transaction Identifier. (4 or 12 bit) */
 
   uint32_t    teic_own; /* (Own Tunnel Endpoint Identifier Control) */
@@ -183,6 +202,16 @@
   u_int16_t   seq;      /* Sequence number of last request */
   struct sockaddr_in sa_peer; /* Address of last request */
   int fd;               /* File descriptor request was received on */
+
+  uint8_t teic_confirmed; /* 0: Not confirmed. 1: Confirmed */
+
+  /* Parameters used for secondary activation procedure (tei data) */
+  /* If (secondary == 1) then teic_own indicates linked PDP context */
+  uint8_t secondary;    /* 0: Primary (control). 1: Secondary (data only) */
+  uint8_t nodata;       /* 0: User plane PDP context. 1: No user plane */
+
+  /* Secondary contexts of this primary context */
+  uint32_t secondary_tei[PDP_MAXNSAPI]; 
 };