From 2c3813354edba78d5081a7e58fd271d1ddaa1d60 Mon Sep 17 00:00:00 2001 From: jjako Date: Tue, 21 Oct 2003 19:09:53 +0000 Subject: GTP1 functionality --- gtp/gtp.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'gtp/gtp.h') diff --git a/gtp/gtp.h b/gtp/gtp.h index 123339b..ebe869e 100644 --- a/gtp/gtp.h +++ b/gtp/gtp.h @@ -38,6 +38,9 @@ #define RESTART_FILE "gsn_restart" #define NAMESIZE 1024 +/* GTP version 1 extension header type definitions. */ +#define GTP_EXT_PDCP_PDU 0xC0 /* PDCP PDU Number */ + /* GTP version 1 message type definitions. Also covers version 0 except * * for anonymous PDP context which was superceded in version 1 */ @@ -259,6 +262,7 @@ struct gsn_t { int (*cb_delete_context) (struct pdp_t*); int (*cb_create_context_ind) (struct pdp_t*); int (*cb_unsup_ind) (struct sockaddr_in *peer); + int (*cb_extheader_ind) (struct sockaddr_in *peer); int (*cb_conf) (int type, int cause, struct pdp_t *pdp, void* cbp); int (*cb_data_ind) (struct pdp_t* pdp, void* pack, unsigned len); @@ -282,7 +286,8 @@ struct gsn_t { uint64_t unknown; /* Number of unknown messages 29.60 11.1.3 */ uint64_t unexpect; /* Number of unexpected messages 29.60 11.1.4 */ uint64_t dublicate; /* Number of dublicate or unsolicited replies */ - uint64_t missing; /* Number of missing mandatory field messages */ + uint64_t missing; /* Number of missing information field messages */ + uint64_t incorrect; /* Number of incorrect information field messages */ uint64_t invalid; /* Number of invalid message format messages */ }; @@ -312,7 +317,7 @@ extern int gtp_update_context(struct gsn_t *gsn, struct pdp_t *pdp, void *cbp, struct in_addr* inetaddr); extern int gtp_delete_context_req(struct gsn_t *gsn, struct pdp_t *pdp, - void *cbp); + void *cbp, int teardown); extern int gtp_data_req(struct gsn_t *gsn, struct pdp_t *pdp, void *pack, unsigned len); @@ -336,6 +341,9 @@ extern int gtp_set_cb_delete_context(struct gsn_t *gsn, extern int gtp_set_cb_unsup_ind(struct gsn_t *gsn, int (*cb) (struct sockaddr_in *peer)); +extern int gtp_set_cb_extheader_ind(struct gsn_t *gsn, + int (*cb) (struct sockaddr_in *peer)); + extern int gtp_set_cb_conf(struct gsn_t *gsn, int (*cb) (int type, int cause, struct pdp_t* pdp, void *cbp)); @@ -381,7 +389,8 @@ extern int gtp_delete_pdp_req(struct gsn_t *gsn, int version, void *cbp, extern int gtp_delete_pdp_resp(struct gsn_t *gsn, int version, struct sockaddr_in *peer, int fd, void *pack, unsigned len, - struct pdp_t *pdp, uint8_t cause); + struct pdp_t *pdp, struct pdp_t *linked_pdp, + uint8_t cause, int teardown); extern int gtp_delete_pdp_ind(struct gsn_t *gsn, int version, struct sockaddr_in *peer, int fd, -- cgit v1.2.3