Mercurial > hg > freeDiameter
annotate contrib/test_Gx/main_gx.c @ 1271:fd398055521c
Remove some unused code. Fix loading message. Add dict_dcca_3gpp dependency.
author | Thomas Klausner <tk@giga.or.at> |
---|---|
date | Wed, 21 May 2014 12:37:14 +0200 |
parents | 55d0867dd8b8 |
children | c8057892e56b |
rev | line source |
---|---|
1257
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
1 /**************** |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
2 Contributed by: Krishnan Srinivasan <hsirk_6@yahoo.com> |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
3 License: to be specified. |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
4 TODO: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
5 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
6 ****************/ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
7 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
8 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
9 #include <freeDiameter/extension.h> |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
10 #include <signal.h> |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
11 #include <time.h> |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
12 #define AUTH_APP_ID 16777238 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
13 #define VENDOR_ID_3GPP 10415 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
14 /* The content of this file follows the same structure as dict_base_proto.c */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
15 |
1271
fd398055521c
Remove some unused code. Fix loading message. Add dict_dcca_3gpp dependency.
Thomas Klausner <tk@giga.or.at>
parents:
1257
diff
changeset
|
16 #if 0 |
1257
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
17 #define CHECK_dict_new( _type, _data, _parent, _ref ) \ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
18 CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_type), (_data), (_parent), (_ref)) ); |
1271
fd398055521c
Remove some unused code. Fix loading message. Add dict_dcca_3gpp dependency.
Thomas Klausner <tk@giga.or.at>
parents:
1257
diff
changeset
|
19 #endif |
1257
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
20 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
21 void dump_sess_eyec(struct session *sess, const char *); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
22 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
23 static int ccr_cb( struct msg ** msg, struct avp * avp, struct session * sess, void * opaque, enum disp_action * act); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
24 static int reauth_cb( struct msg ** msg, struct avp * avp, struct session * sess, void * opaque, enum disp_action * act); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
25 static int cca_cb( struct msg ** msg, struct avp * avp, struct session * sess, void * opaque, enum disp_action * act); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
26 static struct disp_hdl * ccr_cb_hdl = NULL; /* handler for ccr req cb */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
27 static struct disp_hdl * cca_cb_hdl = NULL; /* handler for cca req cb */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
28 static struct disp_hdl * reauth_cb_hdl = NULL; /* handler for cca req cb */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
29 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
30 struct dict_object *ccr_cmd = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
31 struct dict_object *cca_cmd = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
32 struct dict_object *dataobj_re_auth_request_type = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
33 struct dict_object * origin_host = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
34 struct dict_object * origin_realm = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
35 struct dict_object * dest_host = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
36 struct dict_object * dest_realm = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
37 struct dict_object *reauth_cmd = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
38 struct dict_object * auth_app_id = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
39 struct dict_object * service_cxt_id = NULL ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
40 struct dict_object * cc_req_type = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
41 struct dict_object * cc_req_num = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
42 struct dict_object * bearer_usage = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
43 struct dict_object * pflt_oper = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
44 struct dict_object * pflt_info = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
45 struct dict_object * pflt_id = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
46 struct dict_object * gx_inf; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
47 struct dict_object * term_cause = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
48 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
49 struct session *g_sess = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
50 struct session_handler *g_hdlr = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
51 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
52 enum gx_state { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
53 STATE_INIT = 0, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
54 STATE_INTERMEDIATE , |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
55 STATE_FINAL |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
56 }; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
57 struct gx_sm_t { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
58 enum gx_state state; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
59 pthread_t tid; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
60 struct fifo *events; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
61 pthread_mutex_t p_sm_mtx; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
62 int req_num; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
63 struct session *sess; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
64 } g_gx_sm; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
65 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
66 int snd_ccr_msg(struct gx_sm_t **gx_sm , struct dict_object *cmd_r ) ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
67 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
68 void sig_hdlr(void); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
69 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
70 void *gx_sm_th(void *sm); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
71 #define press_key_continue() { printf("%s %d\n", __FUNCTION__, __LINE__);} |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
72 static int app_gx_entry(char * conffile) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
73 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
74 // TRACE_ENTRY("%p", conffile); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
75 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
76 application_id_t dcca_id = AUTH_APP_ID; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
77 application_id_t ccr_id = 272; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
78 application_id_t cca_id = 272; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
79 application_id_t reauth_id = 258; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
80 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_APPLICATION, APPLICATION_BY_ID, &dcca_id, &gx_inf, ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
81 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_CODE_R, &ccr_id, &ccr_cmd, ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
82 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_CODE_A, &cca_id, &cca_cmd, ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
83 // CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_CODE_R, &reauth_id, &reauth_cmd, ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
84 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
85 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
86 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
87 /* Applications section */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
88 #if 0 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
89 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
90 // Gx interface |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
91 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
92 struct dict_application_data data = { AUTH_APP_ID, "3GPP-Gx Application" }; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
93 CHECK_dict_new( DICT_APPLICATION, &data, NULL, &gx_inf); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
94 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
95 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
96 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
97 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
98 #endif |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
99 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
100 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
101 // Do registeration and init stuff |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
102 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
103 struct disp_when data; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
104 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
105 TRACE_DEBUG(FULL, "Initializing dispatch callbacks for Gx interface"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
106 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
107 memset(&data, 0, sizeof(data)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
108 data.app = gx_inf; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
109 data.command = ccr_cmd; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
110 /* Now specific handler for CCR-CMD */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
111 CHECK_FCT( fd_disp_register( ccr_cb, DISP_HOW_CC, &data, NULL, &ccr_cb_hdl ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
112 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
113 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
114 memset(&data, 0, sizeof(data)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
115 data.app = gx_inf; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
116 data.command = cca_cmd; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
117 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
118 CHECK_FCT( fd_disp_register( cca_cb, DISP_HOW_CC, &data, NULL, &cca_cb_hdl ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
119 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
120 #ifdef REAUTH |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
121 CHECK_FCT(fd_dict_search(fd_g_config->cnf_dict, DICT_COMMAND, CMD_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
122 "Re-Auth-Request", &reauth_cmd, ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
123 memset(&data, 0, sizeof(data)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
124 data.app = gx_inf; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
125 data.command = reauth_cmd; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
126 printf("register REAUTH\n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
127 CHECK_FCT( fd_disp_register( reauth_cb, DISP_HOW_CC, &data, NULL, &reauth_cb_hdl ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
128 #endif |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
129 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
130 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
131 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
132 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
133 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
134 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
135 DICT_AVP, AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
136 "Origin-Host", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
137 &origin_host, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
138 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
139 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
140 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
141 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
142 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
143 "Origin-Realm", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
144 &origin_realm, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
145 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
146 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
147 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
148 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
149 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
150 "Destination-Host", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
151 &dest_host, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
152 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
153 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
154 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
155 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
156 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
157 "Destination-Realm", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
158 &dest_realm, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
159 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
160 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
161 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
162 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
163 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
164 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
165 "Auth-Application-Id", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
166 &auth_app_id, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
167 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
168 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
169 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
170 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
171 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
172 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
173 "Service-Context-Id", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
174 &service_cxt_id, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
175 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
176 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
177 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
178 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
179 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
180 "CC-Request-Type", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
181 &cc_req_type, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
182 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
183 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
184 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
185 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
186 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
187 "Termination-Cause", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
188 &term_cause, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
189 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
190 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
191 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
192 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
193 AVP_BY_NAME, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
194 "CC-Request-Number", |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
195 &cc_req_num, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
196 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
197 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
198 struct dict_avp_request req = { VENDOR_ID_3GPP, 0, "Bearer-Usage"}; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
199 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
200 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
201 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
202 AVP_BY_NAME_AND_VENDOR, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
203 &req, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
204 &bearer_usage, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
205 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
206 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
207 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
208 struct dict_avp_request req = { VENDOR_ID_3GPP, 0, "Packet-Filter-Operation"}; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
209 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
210 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
211 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
212 AVP_BY_NAME_AND_VENDOR, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
213 &req, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
214 &pflt_oper, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
215 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
216 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
217 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
218 struct dict_avp_request req = { VENDOR_ID_3GPP, 0, "Packet-Filter-Information"}; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
219 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
220 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
221 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
222 AVP_BY_NAME_AND_VENDOR, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
223 &req, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
224 &pflt_info, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
225 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
226 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
227 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
228 struct dict_avp_request req = { VENDOR_ID_3GPP, 0, "Packet-Filter-Identifier"}; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
229 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
230 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
231 DICT_AVP, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
232 AVP_BY_NAME_AND_VENDOR, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
233 &req, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
234 &pflt_id, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
235 ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
236 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
237 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
238 CHECK_FCT(fd_sess_handler_create( &g_hdlr, free, NULL)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
239 CHECK_FCT( fd_fifo_new(&g_gx_sm.events)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
240 CHECK_FCT( fd_disp_app_support( gx_inf, NULL, 1 , 0)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
241 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
242 CHECK_FCT( fd_event_trig_regcb(SIGUSR1, "app_gx", sig_hdlr ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
243 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
244 |
1271
fd398055521c
Remove some unused code. Fix loading message. Add dict_dcca_3gpp dependency.
Thomas Klausner <tk@giga.or.at>
parents:
1257
diff
changeset
|
245 TRACE_DEBUG(INFO, "Extension 'Gx' initialized"); |
1257
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
246 return 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
247 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
248 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
249 void * gx_sm_th(void *sm) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
250 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
251 struct gx_sm_t *gx_sm = (struct gx_sm_t *) sm; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
252 struct timespec tout; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
253 int evt_code; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
254 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
255 CHECK_SYS_DO( clock_gettime( CLOCK_REALTIME, &tout), goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
256 tout.tv_sec =+ 60 ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
257 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
258 while(1) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
259 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
260 fd_event_timedget(gx_sm->events, &tout , ETIMEDOUT, &evt_code, NULL, NULL ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
261 CHECK_SYS_DO( clock_gettime( CLOCK_REALTIME, &tout), goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
262 printf("in tout sec %d\n", tout.tv_sec); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
263 if(evt_code == ETIMEDOUT) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
264 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
265 snd_ccr_msg(&gx_sm, ccr_cmd); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
266 gx_sm->req_num++ ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
267 gx_sm->state = STATE_INTERMEDIATE; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
268 CHECK_SYS_DO( clock_gettime( CLOCK_REALTIME, &tout), goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
269 tout.tv_sec += 30 ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
270 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
271 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
272 // printf("press enter\n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
273 // getchar(); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
274 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
275 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
276 out: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
277 return NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
278 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
279 //TBD |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
280 int init_gx_sm(struct gx_sm_t *sm) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
281 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
282 sm->state = STATE_INIT; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
283 sm->tid = 0;// |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
284 sm->events = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
285 pthread_mutex_t p_sm_mtx; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
286 sm->req_num = 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
287 sm->sess = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
288 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
289 return 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
290 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
291 int free_gx_sm(struct gx_sm_t *sm) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
292 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
293 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
294 free(sm); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
295 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
296 struct gx_sm_t *gl_gx_sm = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
297 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
298 void sig_hdlr() |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
299 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
300 struct gx_sm_t *gx_sm = gl_gx_sm; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
301 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
302 if( gx_sm) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
303 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
304 fd_sess_dump( 0 , g_gx_sm.sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
305 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
306 } else { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
307 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
308 if(gx_sm= (struct gx_sm_t *)malloc(sizeof(struct gx_sm_t))) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
309 init_gx_sm(gx_sm); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
310 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
311 gl_gx_sm = gx_sm; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
312 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
313 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
314 snd_ccr_msg( &gx_sm, ccr_cmd); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
315 return; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
316 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
317 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
318 static void cr_cb_ans(void *data, struct msg **msg) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
319 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
320 printf("call back \n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
321 return; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
322 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
323 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
324 /* < Session-Id > |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
325 { Origin-Host } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
326 { Origin-Realm } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
327 { Destination-Realm } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
328 { Auth-Application-Id } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
329 { Service-Context-Id } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
330 { CC-Request-Type } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
331 { CC-Request-Number } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
332 */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
333 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
334 int snd_ccr_msg(struct gx_sm_t **sm , struct dict_object *cmd_r ) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
335 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
336 struct msg * req = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
337 struct avp * avp = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
338 union avp_value val; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
339 struct ta_mess_info * mi = NULL, *svg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
340 struct session *sess = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
341 struct gx_sm_t *gx_sm = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
342 struct gx_sm_t *ptr = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
343 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
344 TRACE_DEBUG(FULL, "Creating a new CCR message for sending. %p", gx_sm); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
345 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
346 /* Create the request from template */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
347 CHECK_FCT_DO( fd_msg_new( cmd_r, MSGFL_ALLOC_ETEID, &req ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
348 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
349 gx_sm = *sm; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
350 /* Create a new session */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
351 if(!gx_sm->sess) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
352 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
353 CHECK_FCT_DO( fd_sess_new( &sess, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
354 fd_g_config->cnf_diamid, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
355 fd_g_config->cnf_diamid_len, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
356 "CCR_SESSION", strlen("CCR_SESSION") ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
357 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
358 printf("statemachine: %p %p %p\n", *(&gx_sm), gx_sm , *sm); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
359 gx_sm->sess = sess; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
360 printf("new session %p \n", sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
361 //Hold the session till terminate happens |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
362 CHECK_FCT( fd_sess_ref_msg(sess) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
363 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
364 } else { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
365 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
366 sess = gx_sm->sess; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
367 printf("use previous session %p \n", sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
368 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
369 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
370 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
371 fd_sess_dump( 0 , sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
372 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
373 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
374 // dump_sess_eyec( sess, __FUNCTION__); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
375 /* Now set all AVPs values */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
376 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
377 /* Session-Id */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
378 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
379 os0_t sid; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
380 size_t sidlen; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
381 struct dict_object *sess_id = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
382 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
383 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
384 , DICT_AVP, AVP_BY_NAME |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
385 , "Session-Id" |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
386 , &sess_id, ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
387 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
388 CHECK_FCT_DO( fd_sess_getsid ( sess, &sid, &sidlen ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
389 CHECK_FCT_DO( fd_msg_avp_new ( sess_id, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
390 val.os.data = sid; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
391 val.os.len = sidlen; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
392 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
393 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_FIRST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
394 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
395 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
396 /* Set the Destination-Realm AVP */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
397 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
398 CHECK_FCT_DO( fd_msg_avp_new ( dest_realm, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
399 val.os.data = (unsigned char *)("vm"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
400 val.os.len = strlen("vm"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
401 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
402 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
403 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
404 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
405 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
406 /* Set the Destination-Host AVP if needed*/ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
407 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
408 CHECK_FCT_DO( fd_msg_avp_new ( dest_host, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
409 val.os.data = (unsigned char *)("192.168.101.3"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
410 val.os.len = strlen("192.168.101.3"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
411 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
412 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
413 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
414 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
415 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
416 /* Set Origin-Host & Origin-Realm */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
417 CHECK_FCT_DO( fd_msg_add_origin ( req, 0 ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
418 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
419 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
420 /* Set Auth-Application ID */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
421 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
422 CHECK_FCT_DO( fd_msg_avp_new ( auth_app_id, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
423 val.i32 = AUTH_APP_ID; // Auth-App id is 4 for CCR |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
424 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
425 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
426 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
427 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
428 /* Set Service Context ID */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
429 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
430 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
431 CHECK_FCT_DO( fd_msg_avp_new ( service_cxt_id, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
432 val.os.data = (unsigned char *)("test@tst"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
433 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
434 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
435 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
436 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
437 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
438 /* Set Request Type */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
439 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
440 #define CCR_INIT_REQUEST 1 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
441 #define CCR_UPDATE_REQUEST 2 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
442 #define CCR_TERMINATION_REQUEST 3 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
443 #define CCR_EVENT_REQUEST 4 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
444 //TODO Change this to use enum object |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
445 CHECK_FCT_DO( fd_msg_avp_new ( cc_req_type, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
446 if(gx_sm->state == STATE_INIT) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
447 val.i32 = CCR_INIT_REQUEST; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
448 else if(gx_sm->state == STATE_FINAL) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
449 val.i32 = CCR_TERMINATION_REQUEST; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
450 else |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
451 val.i32 = CCR_UPDATE_REQUEST; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
452 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
453 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
454 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
455 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
456 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
457 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
458 /* Set Request Number */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
459 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
460 CHECK_FCT_DO( fd_msg_avp_new ( cc_req_num, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
461 val.i32 = gx_sm->req_num; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
462 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
463 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
464 gx_sm->req_num++; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
465 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
466 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
467 switch(gx_sm->state) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
468 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
469 case STATE_INIT: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
470 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
471 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
472 //Set Bearer-Usage |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
473 //TODO Change this to use enum object |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
474 CHECK_FCT_DO( fd_msg_avp_new ( bearer_usage, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
475 val.i32 = 1;//IMS |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
476 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
477 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
478 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
479 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
480 //Set Packet Filter Operation |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
481 //TODO Change this to use enum object |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
482 CHECK_FCT_DO( fd_msg_avp_new ( pflt_oper, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
483 val.i32 = 1;//ADDITION |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
484 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
485 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
486 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
487 struct avp *flt_info = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
488 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
489 //Set Packet Filter Information |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
490 CHECK_FCT_DO( fd_msg_avp_new ( pflt_info, 0, &flt_info ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
491 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
492 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
493 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, flt_info ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
494 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
495 // Set Packet Filter Identity |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
496 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
497 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
498 CHECK_FCT_DO( fd_msg_avp_new ( pflt_id, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
499 val.os.data = (unsigned char *)("ID"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
500 val.os.len = strlen("ID"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
501 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
502 if(flt_info) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
503 CHECK_FCT_DO( fd_msg_avp_add( flt_info, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
504 }else { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
505 printf("flt_info NULL\n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
506 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
507 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
508 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
509 CHECK_FCT(fd_sess_state_store(g_hdlr, sess, &gx_sm)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
510 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
511 break; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
512 case STATE_FINAL: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
513 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
514 //Set Packet Filter Operation |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
515 //TODO Change this to use enum object |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
516 CHECK_FCT_DO( fd_msg_avp_new ( term_cause, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
517 val.i32 = 1;//Diameter logout |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
518 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
519 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
520 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
521 break; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
522 default: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
523 printf("State mismatch \n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
524 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
525 fflush(stderr); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
526 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
527 /* Send the request */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
528 printf("CCA %p\n",req); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
529 // Everthing Done Store the state: reply should retreive it |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
530 CHECK_FCT_DO( fd_msg_send( &req, NULL, NULL ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
531 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
532 out: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
533 return; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
534 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
535 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
536 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
537 static int reauth_cb( struct msg ** msg, struct avp * avp, struct session * sess, void * opaque, enum disp_action * act) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
538 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
539 struct msg *ans, *qry; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
540 struct avp * a; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
541 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
542 TRACE_ENTRY("%p %p %p %p", msg, avp, sess, act); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
543 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
544 if (msg == NULL) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
545 return EINVAL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
546 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
547 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
548 /* Create answer header */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
549 qry = *msg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
550 CHECK_FCT( fd_msg_new_answer_from_req ( fd_g_config->cnf_dict, msg, 0 ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
551 ans = *msg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
552 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
553 /* Set the Origin-Host, Origin-Realm, Result-Code AVPs */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
554 CHECK_FCT( fd_msg_rescode_set( ans, "DIAMETER_SUCCESS", NULL, NULL, 1 ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
555 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
556 /* Send the answer */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
557 CHECK_FCT( fd_msg_send( msg, NULL, NULL ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
558 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
559 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
560 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
561 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
562 static int dcca_ans_from_req( struct dict_object * obj, struct msg *qry, struct msg **msg) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
563 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
564 struct avp *avp = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
565 struct avp_hdr * avpdata; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
566 int rc = -1; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
567 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
568 CHECK_FCT(fd_msg_search_avp( qry, obj, &avp)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
569 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
570 avp = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
571 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
572 CHECK_FCT_DO( fd_msg_avp_new ( obj, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
573 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, avpdata->avp_value ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
574 CHECK_FCT_DO( fd_msg_avp_add( *msg, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
575 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
576 rc = 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
577 out: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
578 return rc; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
579 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
580 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
581 /* Dummy ccr which : |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
582 Read the cc-req-type && cc-req-number from the msg and stick it back |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
583 in the reply |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
584 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
585 */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
586 static int ccr_cb( struct msg ** msg, struct avp * r_avp, struct session * sess, void * opaque, enum disp_action * act) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
587 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
588 struct msg *ans, *qry; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
589 struct avp *avp = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
590 struct avp_hdr * avp_data; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
591 int rc = - 1; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
592 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
593 TRACE_ENTRY("%p %p %p %p", msg, r_avp, sess, act); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
594 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
595 if (msg == NULL) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
596 return EINVAL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
597 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
598 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
599 /* Create answer header */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
600 qry = *msg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
601 CHECK_FCT_DO( fd_msg_new_answer_from_req ( fd_g_config->cnf_dict, msg, 0 ) , goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
602 ans = *msg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
603 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
604 /* Set the Origin-Host, Origin-Realm, Result-Code AVPs */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
605 CHECK_FCT_DO( fd_msg_rescode_set( ans, "DIAMETER_SUCCESS", NULL, NULL, 1 ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
606 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
607 // Get the auth_app_id and from the reply and set it in the reply |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
608 CHECK_FCT_DO(dcca_ans_from_req( auth_app_id, qry, msg), goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
609 CHECK_FCT_DO(dcca_ans_from_req( cc_req_type, qry, msg), goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
610 CHECK_FCT_DO(dcca_ans_from_req( cc_req_num, qry, msg), goto out); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
611 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
612 /* Send the answer */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
613 CHECK_FCT_DO( fd_msg_send( msg, NULL, NULL ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
614 rc = 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
615 out: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
616 //Free up the memory |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
617 return rc ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
618 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
619 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
620 int send_reauth_req() |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
621 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
622 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
623 struct dict_application_data appdata; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
624 struct avp *avp = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
625 union avp_value val ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
626 struct msg *qry, *ans = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
627 struct msg *req = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
628 struct msg *tst = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
629 struct dict_object * auth_app_id = NULL, *reauth_req_type = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
630 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
631 // qry = *msg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
632 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
633 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
634 { // Send new reauth request |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
635 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
636 CHECK_FCT_DO( fd_msg_new( reauth_cmd, MSGFL_ALLOC_ETEID, &req ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
637 CHECK_FCT( fd_dict_getval(gx_inf, &appdata) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
638 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
639 struct msg_hdr * header = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
640 CHECK_FCT( fd_msg_hdr ( req, &header ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
641 header->msg_appl = appdata.application_id; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
642 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
643 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
644 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
645 /* Session-Id */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
646 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
647 os0_t sid; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
648 size_t sidlen; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
649 struct dict_object *sess_id = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
650 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Session-Id", &sess_id, ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
651 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
652 //CHECK_FCT_DO( fd_sess_getsid ( sess, &sid, &sidlen ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
653 CHECK_FCT_DO( fd_msg_avp_new ( sess_id, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
654 val.os.data = sid; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
655 val.os.len = sidlen; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
656 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
657 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_FIRST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
658 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
659 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
660 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
661 /* Set the Destination-Realm AVP */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
662 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
663 CHECK_FCT_DO( fd_msg_avp_new ( dest_realm, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
664 val.os.data = (unsigned char *)("vm"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
665 val.os.len = strlen("vm"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
666 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
667 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
668 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
669 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
670 /* Set the Destination-Host AVP if needed*/ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
671 // if (ta_conf->dest_host) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
672 CHECK_FCT_DO( fd_msg_avp_new ( dest_host, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
673 val.os.data = (unsigned char *)("cli.vm"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
674 val.os.len = strlen("cli.vm"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
675 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
676 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
677 // } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
678 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
679 /* Set Origin-Host & Origin-Realm */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
680 CHECK_FCT_DO( fd_msg_add_origin ( req, 0 ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
681 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
682 /* AUTH_Application-ID */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
683 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Auth-Application-Id", &auth_app_id, ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
684 CHECK_FCT_DO( fd_msg_avp_new ( auth_app_id, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
685 val.i32 = appdata.application_id; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
686 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
687 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
688 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
689 /* Re-Auth Request Type */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
690 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, DICT_AVP, AVP_BY_NAME, "Re-Auth-Request-Type", &reauth_req_type, ENOENT) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
691 CHECK_FCT_DO( fd_msg_avp_new ( reauth_req_type, 0, &avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
692 val.i32 = 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
693 CHECK_FCT_DO( fd_msg_avp_setvalue( avp, &val ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
694 CHECK_FCT_DO( fd_msg_avp_add( req, MSG_BRW_LAST_CHILD, avp ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
695 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
696 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
697 CHECK_FCT_DO( fd_msg_send( &req, cr_cb_ans, NULL ), goto out ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
698 out: |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
699 return 0 ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
700 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
701 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
702 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
703 /* Search a given AVP model in an AVP (extracted from libfreediameter/message.c ) */ |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
704 int fd_avp_search_avp ( struct avp * groupedavp, struct dict_object * what, struct avp ** avp ) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
705 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
706 struct avp * nextavp; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
707 struct avp_hdr * nextavphdr; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
708 struct dict_avp_data dictdata; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
709 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
710 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
711 TRACE_ENTRY("%p %p %p", groupedavp, what, avp); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
712 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
713 CHECK_FCT( fd_dict_getval(what, &dictdata) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
714 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
715 // Loop only in the group AVP |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
716 CHECK_FCT( fd_msg_browse(groupedavp, MSG_BRW_FIRST_CHILD, (void *)&nextavp, NULL) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
717 CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
718 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
719 while (nextavphdr) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
720 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
721 if ( (nextavphdr->avp_code == dictdata.avp_code) && (nextavphdr->avp_vendor == dictdata.avp_vendor) ) // always 0 if no Vendor flag |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
722 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
723 break; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
724 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
725 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
726 // Otherwise move to next AVP in the grouped AVP |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
727 CHECK_FCT( fd_msg_browse(nextavp, MSG_BRW_NEXT, (void *)&nextavp, NULL) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
728 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
729 if(nextavp!=NULL) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
730 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
731 CHECK_FCT( fd_msg_avp_hdr( nextavp, &nextavphdr ) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
732 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
733 else |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
734 nextavphdr=NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
735 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
736 if (avp) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
737 *avp = nextavp; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
738 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
739 if (avp && nextavp) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
740 struct dictionary * dict; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
741 CHECK_FCT( fd_dict_getdict( what, &dict) ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
742 CHECK_FCT_DO( fd_msg_parse_dict( nextavp, dict, NULL ), ); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
743 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
744 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
745 if (avp || nextavp) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
746 return 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
747 else |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
748 return ENOENT; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
749 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
750 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
751 static int cca_cb( struct msg ** msg, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
752 struct avp * t_avp , |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
753 struct session * sess, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
754 void * opaque, |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
755 enum disp_action * act) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
756 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
757 struct avp *avp = NULL, *g_avp = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
758 struct msg *req = *msg; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
759 struct dict_object *chrg_rule_name = NULL ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
760 struct dict_object *chrg_rule_grp = NULL ; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
761 struct avp_hdr * avpdata = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
762 struct dict_avp_request grule_req = {VENDOR_ID_3GPP, 0,"Charging-Rule-Install"}; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
763 struct dict_avp_request rule_req = {VENDOR_ID_3GPP, 0,"Charging-Rule-Name"}; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
764 struct timespec sess_timeout; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
765 struct gx_sm_t *gx_sm = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
766 // struct session *sess = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
767 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
768 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
769 CHECK_FCT(fd_sess_state_retrieve( g_hdlr, sess, &gx_sm)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
770 fd_sess_dump( 0, sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
771 if(gx_sm->state != STATE_FINAL) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
772 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
773 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
774 , DICT_AVP, AVP_BY_NAME_AND_VENDOR |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
775 , &grule_req |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
776 , &chrg_rule_grp |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
777 , ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
778 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
779 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
780 , DICT_AVP, AVP_BY_NAME_AND_VENDOR |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
781 , &rule_req |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
782 , &chrg_rule_name |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
783 , ENOENT)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
784 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
785 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
786 CHECK_FCT(fd_msg_search_avp ( *msg, chrg_rule_grp, &g_avp )); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
787 CHECK_FCT(fd_avp_search_avp(g_avp, chrg_rule_name, &avp)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
788 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
789 if(avp) { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
790 CHECK_FCT(fd_msg_avp_hdr(avp, &avpdata)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
791 } else { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
792 printf("NULL AVP \n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
793 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
794 printf("charging-rule-name %s\n", avpdata->avp_value->os.data); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
795 gx_sm->state = STATE_FINAL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
796 dump_sess_eyec( sess, __FUNCTION__); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
797 printf("next dump\n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
798 CHECK_FCT(fd_sess_state_store( g_hdlr, sess, &gx_sm)); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
799 fd_msg_free(*msg); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
800 *msg = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
801 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
802 } else { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
803 printf("Session terminated\n"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
804 free_gx_sm(gx_sm); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
805 fd_msg_free(*msg); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
806 fd_sess_reclaim(&sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
807 *msg = NULL; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
808 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
809 fd_sess_dump( 0 , sess); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
810 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
811 return 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
812 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
813 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
814 static int gx_entry(char * conffile) |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
815 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
816 return 0; |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
817 } |
1271
fd398055521c
Remove some unused code. Fix loading message. Add dict_dcca_3gpp dependency.
Thomas Klausner <tk@giga.or.at>
parents:
1257
diff
changeset
|
818 EXTENSION_ENTRY( "app_gx", app_gx_entry, "dict_dcca_3gpp"); |
1257
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
819 //EXTENSION_ENTRY( "app_gx", gx_entry); |