Mercurial > hg > freeDiameter
annotate contrib/test_Gx/main_gx.c @ 1257:55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
author | Sebastien Decugis <sdecugis@freediameter.net> |
---|---|
date | Sun, 11 May 2014 22:34:48 +0800 |
parents | |
children | fd398055521c |
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 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
16 #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
|
17 CHECK_FCT( fd_dict_new( fd_g_config->cnf_dict, (_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 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
19 #define CHECK_dict_search( _type, _criteria, _what, _result ) \ |
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 CHECK_FCT( fd_dict_search( fd_g_config->cnf_dict, (_type), (_criteria), (_what), (_result), 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
|
21 |
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 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
|
23 struct local_rules_definition { |
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 char *avp_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
|
25 enum rule_position position; |
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 int min; |
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 int max; |
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 }; |
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 #define RULE_ORDER( _position ) ((((_position) == RULE_FIXED_HEAD) || ((_position) == RULE_FIXED_TAIL)) ? 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
|
31 |
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 #define PARSE_loc_rules( _rulearray, _parent) { \ |
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 int __ar; \ |
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 for (__ar=0; __ar < sizeof(_rulearray) / sizeof((_rulearray)[0]); __ar++) { \ |
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_rule_data __data = { 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 (_rulearray)[__ar].position, \ |
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 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
|
38 (_rulearray)[__ar].min, \ |
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 (_rulearray)[__ar].max}; \ |
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 __data.rule_order = RULE_ORDER(__data.rule_position); \ |
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 CHECK_FCT( fd_dict_search( \ |
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 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
|
43 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
|
44 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
|
45 (_rulearray)[__ar].avp_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
|
46 &__data.rule_avp, 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
|
47 if ( !__data.rule_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
|
48 TRACE_DEBUG(INFO, "AVP Not found: '%s'", (_rulearray)[__ar].avp_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
|
49 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
|
50 } \ |
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 CHECK_FCT_DO( fd_dict_new( fd_g_config->cnf_dict, DICT_RULE, &__data, _parent, 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
|
52 { \ |
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 TRACE_DEBUG(INFO, "Error on rule with AVP '%s'", \ |
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 (_rulearray)[__ar].avp_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
|
55 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
|
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 } \ |
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 } |
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 |
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 #define enumval_def_u32( _val_, _str_ ) \ |
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 { _str_, { .u32 = _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
|
62 |
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 #define enumval_def_os( _len_, _val_, _str_ ) \ |
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 { _str_, { .os = { .data = (unsigned char *)_val_, .len = _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
|
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 |
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 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
|
69 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
|
70 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
|
71 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
|
72 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
|
73 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
|
74 |
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 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
|
76 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
|
77 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
|
78 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
|
79 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
|
80 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
|
81 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
|
82 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
|
83 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
|
84 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
|
85 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
|
86 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
|
87 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
|
88 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
|
89 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
|
90 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
|
91 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
|
92 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
|
93 |
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 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
|
95 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
|
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 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
|
98 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
|
99 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
|
100 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
|
101 }; |
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 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
|
103 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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 } 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
|
110 |
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 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
|
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 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
|
114 |
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 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
|
116 #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
|
117 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
|
118 { |
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 // 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
|
120 { |
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 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 // 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
|
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 /* 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
|
133 #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
|
134 { |
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 // 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
|
136 { |
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 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
|
138 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
|
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 } |
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 |
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 } |
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 #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
|
144 |
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 |
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 // 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
|
147 { |
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 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
|
149 |
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 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
|
151 |
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 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
|
153 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
|
154 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
|
155 /* 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
|
156 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
|
157 |
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 |
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 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
|
160 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
|
161 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
|
162 |
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 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
|
164 |
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 #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
|
166 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
|
167 "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
|
168 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 #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
|
174 |
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 |
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 |
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 |
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 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
|
180 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
|
181 "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
|
182 &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
|
183 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
|
184 |
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 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
|
186 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
|
187 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
|
188 "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
|
189 &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
|
190 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
|
191 |
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 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
|
193 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
|
194 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
|
195 "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
|
196 &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
|
197 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
|
198 |
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 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
|
200 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
|
201 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
|
202 "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
|
203 &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
|
204 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
|
205 |
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 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
|
208 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
|
209 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
|
210 "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
|
211 &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
|
212 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
|
213 |
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 |
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 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
|
216 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
|
217 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
|
218 "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
|
219 &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
|
220 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
|
221 |
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 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
|
223 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
|
224 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
|
225 "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
|
226 &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
|
227 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
|
228 |
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 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
|
230 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
|
231 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
|
232 "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
|
233 &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
|
234 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
|
235 |
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 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
|
237 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
|
238 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
|
239 "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
|
240 &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
|
241 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
|
242 { |
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 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
|
244 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
245 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
|
246 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
|
247 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
|
248 &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
|
249 &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
|
250 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
|
251 } |
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 { |
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 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
|
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_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
|
256 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
|
257 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
|
258 &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
|
259 &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
|
260 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
|
261 } |
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 { |
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 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
|
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 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
|
266 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
|
267 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
|
268 &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
|
269 &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
|
270 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
|
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 { |
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 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
|
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 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
|
276 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
|
277 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
|
278 &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
|
279 &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
|
280 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
|
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 |
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 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
|
284 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
|
285 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
|
286 |
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 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
|
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 |
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 TRACE_DEBUG(INFO, "Extension 'Dictionary definitions for DCCA (rfc4006)' initialized"); |
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 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
|
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 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
|
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 *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
|
297 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
|
298 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
|
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 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
|
301 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
|
302 |
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 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
|
304 |
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 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
|
306 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
|
307 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
|
308 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
|
309 |
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 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
|
311 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
|
312 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
|
313 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
|
314 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
|
315 |
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 // 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
|
318 // 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
|
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 |
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 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
|
322 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
|
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 //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
|
325 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
|
326 { |
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 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
|
328 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
|
329 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
|
330 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
|
331 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
|
332 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
|
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 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
|
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 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
|
337 { |
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 |
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 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
|
340 } |
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 *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
|
342 |
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 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
|
344 { |
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 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
|
346 |
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 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
|
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 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
|
350 |
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 } 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
|
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 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
|
354 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
|
355 } |
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 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
|
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 |
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 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
|
360 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
|
361 } |
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 |
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 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
|
364 { |
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 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
|
366 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
|
367 } |
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 /* < 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
|
370 { 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
|
371 { 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
|
372 { 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
|
373 { 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
|
374 { 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
|
375 { 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
|
376 { 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
|
377 */ |
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 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
|
380 { |
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 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
|
382 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
|
383 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
|
384 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
|
385 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
|
386 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
|
387 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
|
388 |
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 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
|
390 |
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 /* 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
|
392 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
|
393 |
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 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
|
395 /* 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
|
396 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
|
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_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
|
399 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
|
400 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
|
401 "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
|
402 |
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 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
|
404 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
|
405 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
|
406 //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
|
407 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
|
408 |
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 } 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
|
410 |
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 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
|
412 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
|
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 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
|
417 |
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 // 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
|
420 /* 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
|
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 /* 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
|
423 { |
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 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
|
425 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
|
426 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
|
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 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
|
429 , 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
|
430 , "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
|
431 , &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
|
432 |
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_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
|
434 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
|
435 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
|
436 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
|
437 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
|
438 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
|
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 |
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 /* 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
|
442 { |
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 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
|
444 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
|
445 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
|
446 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
|
447 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
|
448 } |
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 |
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 |
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 /* 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
|
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_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
|
454 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
|
455 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
|
456 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
|
457 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
|
458 } |
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 |
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 /* 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
|
462 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
|
463 |
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 |
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 /* 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
|
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 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
|
468 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
|
469 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
|
470 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
|
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 |
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 /* 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
|
474 { |
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 |
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_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
|
477 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
|
478 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
|
479 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
|
480 |
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 } |
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 |
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 /* 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
|
484 { |
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 #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
|
486 #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
|
487 #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
|
488 #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
|
489 //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
|
490 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
|
491 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
|
492 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
|
493 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
|
494 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
|
495 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
|
496 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
|
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_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
|
499 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
|
500 |
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 } |
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 |
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 /* 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
|
504 { |
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 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
|
506 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
|
507 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
|
508 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
|
509 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
|
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 |
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 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
|
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 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
|
515 |
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 { |
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 //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
|
518 //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
|
519 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
|
520 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
|
521 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
|
522 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
|
523 } |
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 //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
|
526 //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
|
527 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
|
528 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
|
529 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
|
530 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
|
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 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
|
533 { |
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 //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
|
535 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
|
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 |
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 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
|
539 } |
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 // 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
|
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 |
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 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
|
544 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
|
545 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
|
546 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
|
547 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
|
548 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
|
549 }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
|
550 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
|
551 } |
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 } |
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_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
|
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 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
|
557 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
|
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 //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
|
560 //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
|
561 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
|
562 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
|
563 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
|
564 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
|
565 } |
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 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
|
567 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
|
568 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
|
569 } |
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 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
|
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 /* 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
|
573 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
|
574 // 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
|
575 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
|
576 |
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; |
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 |
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 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
|
583 { |
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 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
|
585 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
|
586 |
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 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
|
588 |
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 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
|
590 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
|
591 |
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 /* 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
|
594 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
|
595 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
|
596 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
|
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 /* 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
|
599 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
|
600 |
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 /* 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
|
602 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
|
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 |
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 |
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 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
|
608 { |
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 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
|
610 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
|
611 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
|
612 |
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(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
|
614 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
|
615 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
|
616 |
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 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
|
618 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
|
619 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
|
620 |
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 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
|
622 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
|
623 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
|
624 |
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 } |
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 /* 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
|
627 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
|
628 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
|
629 |
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 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
|
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 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
|
634 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
|
635 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
|
636 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
|
637 |
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 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
|
639 |
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 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
|
641 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
|
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 /* 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
|
645 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
|
646 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
|
647 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
|
648 |
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 /* 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
|
650 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
|
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 // 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
|
653 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
|
654 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
|
655 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
|
656 |
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 /* 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
|
658 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
|
659 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
|
660 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
|
661 //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
|
662 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
|
663 |
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 } |
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 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
|
666 |
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 { |
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 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
|
669 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
|
670 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
|
671 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
|
672 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
|
673 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
|
674 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
|
675 |
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 // 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
|
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 { // 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
|
680 |
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 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
|
682 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
|
683 |
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 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
|
685 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
|
686 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
|
687 |
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 |
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 /* 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
|
691 { |
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 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
|
693 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
|
694 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
|
695 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
|
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_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
|
698 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
|
699 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
|
700 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
|
701 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
|
702 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
|
703 |
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 } |
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 /* 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
|
707 { |
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 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
|
709 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
|
710 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
|
711 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
|
712 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
|
713 } |
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 /* 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
|
716 // 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
|
717 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
|
718 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
|
719 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
|
720 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
|
721 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
|
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 |
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 /* 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
|
725 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
|
726 |
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 /* 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
|
728 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
|
729 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
|
730 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
|
731 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
|
732 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
|
733 |
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 /* 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
|
735 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
|
736 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
|
737 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
|
738 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
|
739 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
|
740 |
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 |
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_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
|
743 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
|
744 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
|
745 |
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 |
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 } |
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 /* 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
|
749 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
|
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 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
|
752 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
|
753 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
|
754 |
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 |
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 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
|
757 |
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 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
|
759 |
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 // 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
|
761 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
|
762 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
|
763 |
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 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
|
765 |
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 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
|
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 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
|
769 } |
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 |
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 // 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
|
772 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
|
773 |
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 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
|
775 { |
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 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
|
777 } |
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 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
|
779 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
|
780 } |
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 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
|
782 *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
|
783 |
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 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
|
785 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
|
786 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
|
787 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
|
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 |
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 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
|
791 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
|
792 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
|
793 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
|
794 } |
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 |
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 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
|
797 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
|
798 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
|
799 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
|
800 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
|
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 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
|
803 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
|
804 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
|
805 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
|
806 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
|
807 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
|
808 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
|
809 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
|
810 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
|
811 // 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
|
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 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
|
815 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
|
816 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
|
817 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
818 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
|
819 , 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
|
820 , &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
|
821 , &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
|
822 , 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
|
823 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
824 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
|
825 , 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
|
826 , &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
|
827 , &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
|
828 , 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
|
829 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
830 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
831 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
|
832 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
|
833 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
834 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
|
835 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
|
836 } 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
|
837 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
|
838 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
839 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
|
840 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
|
841 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
|
842 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
|
843 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
|
844 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
|
845 *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
|
846 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
847 } 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
|
848 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
|
849 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
|
850 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
|
851 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
|
852 *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
|
853 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
854 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
|
855 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
856 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
|
857 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
858 |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
859 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
|
860 { |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
861 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
|
862 } |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
863 EXTENSION_ENTRY( "app_gx", app_gx_entry, "dict_dcca"); |
55d0867dd8b8
Added a basic Gx implementation in contrib (untested) -- reported working but may need some adaptation
Sebastien Decugis <sdecugis@freediameter.net>
parents:
diff
changeset
|
864 //EXTENSION_ENTRY( "app_gx", gx_entry); |