Mercurial > hg > freeDiameter
comparison doc/dbg_interactive.py.sample @ 624:a5682d003ed9
Finally got the proxy aka shadow class to work
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Thu, 09 Dec 2010 17:14:24 +0900 |
parents | fc4f5815f0aa |
children | 330be61dbf43 |
comparison
equal
deleted
inserted
replaced
623:fc4f5815f0aa | 624:a5682d003ed9 |
---|---|
27 # Turn on debug for a specific function | 27 # Turn on debug for a specific function |
28 cvar.fd_debug_one_function = "gc_th_fct" | 28 cvar.fd_debug_one_function = "gc_th_fct" |
29 | 29 |
30 | 30 |
31 # Print messages to freeDiameter's debug facility | 31 # Print messages to freeDiameter's debug facility |
32 fd_log_debug("3 + 4 = %d\n", 7) | 32 fd_log_debug("3 + 4 = %d\n" % (7)) |
33 # Hum... Currently I get "3 + 4 = 0" output... need some fix... | 33 # See SWIG documentation about varargs functions for more information |
34 | 34 |
35 | 35 |
36 # SWIG deals with structures as follow: | 36 # SWIG deals with structures as follow: |
37 # Take the structure: | 37 # Take the structure: |
38 # struct foo { int a; } | 38 # struct foo { int a; } |
39 # The following functions are available to python: | 39 # The following functions are available to python: |
40 # s = new_foo() --> s = calloc(1, sizeof(struct foo)) | 40 # s = new_foo() --> s = calloc(1, sizeof(struct foo)) |
41 # foo_a_set(s, 2) --> s->a = 2 | 41 # foo_a_set(s, 2) --> s->a = 2 |
42 # foo_a_get(s) --> returns s->a value | 42 # foo_a_get(s) --> returns s->a value |
43 # delete_foo(s) --> free(s) | 43 # delete_foo(s) --> free(s) |
44 # | |
45 # In addition, thanks to proxy (aka shadow) class, we can also do: | |
46 # s = foo() | |
47 # s.a = 2 | |
48 # s.a | |
49 # del s | |
44 | 50 |
45 | 51 |
46 # Display the local Diameter Identity: | 52 # Display the local Diameter Identity: |
47 print "Local Diameter Identity:", fd_config_cnf_diamid_get(cvar.fd_g_config) | 53 print "Local Diameter Identity:", fd_config_cnf_diamid_get(cvar.fd_g_config) |
48 print "Realm:", fd_config_cnf_diamrlm_get(cvar.fd_g_config) | 54 print "Realm:", fd_config_cnf_diamrlm_get(cvar.fd_g_config) |
60 peer_info_pi_diamid_set( mypeer, "nas.testbed.aaa" ) | 66 peer_info_pi_diamid_set( mypeer, "nas.testbed.aaa" ) |
61 myconfig = peer_info_config_get(mypeer) | 67 myconfig = peer_info_config_get(mypeer) |
62 mypicflag = peer_info_config_pic_flags_get(myconfig) | 68 mypicflag = peer_info_config_pic_flags_get(myconfig) |
63 peer_info_config_pic_flags_pro4_set(mypicflag, 1) # 1 for TCP | 69 peer_info_config_pic_flags_pro4_set(mypicflag, 1) # 1 for TCP |
64 fd_peer_add(mypeer, "python", None, None) | 70 fd_peer_add(mypeer, "python", None, None) |
71 delete_peer_info(mypeer) | |
65 | 72 |
66 | 73 |
67 # Lists | 74 # Lists |
68 l1 = new_fd_list() | 75 l1 = new_fd_list() |
69 l2 = new_fd_list() | 76 l2 = new_fd_list() |
75 delete_fd_list(l1) | 82 delete_fd_list(l1) |
76 | 83 |
77 | 84 |
78 # Dictionary | 85 # Dictionary |
79 gdict = fd_config_cnf_dict_get(cvar.fd_g_config) | 86 gdict = fd_config_cnf_dict_get(cvar.fd_g_config) |
87 | |
80 id = new_int_ptr() | 88 id = new_int_ptr() |
81 int_ptr_assign(id, 3) | 89 int_ptr_assign(id, 3) |
82 res = new_dict_object_ptr() | 90 pobj = new_dict_object_pptr() |
83 err = fd_dict_search ( gdict, DICT_APPLICATION, APPLICATION_BY_ID, id, res, -1 ) | 91 fd_dict_search ( gdict, DICT_APPLICATION, APPLICATION_BY_ID, id, pobj, -1 ) |
84 obj = dict_object_ptr_value(res) | 92 delete_int_ptr(id) |
93 obj = dict_object_pptr_value(pobj) | |
94 delete_dict_object_pptr(pobj) | |
85 t = new_dict_object_type_ptr() | 95 t = new_dict_object_type_ptr() |
86 err = fd_dict_gettype(obj, t) | 96 fd_dict_gettype(obj, t) |
87 dict_object_type_ptr_dump(t) | 97 dict_object_type_ptr_dump(t) |
88 v = new_dict_application_data() | 98 delete_dict_object_type_ptr(t) |
89 err = fd_dict_getval(obj, v) | 99 objdata = new_dict_application_data() |
90 dict_application_data_application_name_get(v) | 100 fd_dict_getval(obj, objdata) |
101 dict_application_data_application_name_get(objdata) | |
102 delete_dict_application_data(objdata) | |
103 | |
104 vd = new_dict_vendor_data() | |
105 dict_vendor_data_vendor_id_set(vd, 123) | |
106 dict_vendor_data_vendor_name_set(vd, "my test vendor") | |
107 pobj = new_dict_object_pptr() | |
108 fd_dict_new ( gdict, DICT_VENDOR, vd, None, pobj) | |
109 delete_dict_vendor_data(vd) | |
110 obj = dict_object_pptr_value(pobj) | |
111 delete_dict_object_pptr(pobj) | |
112 fd_dict_dump_object(obj) | |
91 | 113 |
92 | 114 |
115 # Sessions | |
116 pmyhdl = new_session_handler_pptr() | |
117 fd_sess_handler_create_internal(pmyhdl, None) | |
118 ### Have to work on this one, a cleanup handler is actually required. | |
119 ### How to define the handler in python ? | |
120 myhdl = session_handler_pptr_value(pmyhdl) | |
121 delete_session_handler_pptr(pmyhdl) | |
93 | 122 |
123 psess = new_session_pptr() | |
124 fd_sess_new (psess, fd_config_cnf_diamid_get(cvar.fd_g_config), "dbg_interactive", 0) | |
125 sess = session_pptr_value(psess) | |
126 fd_sess_dump(0, sess) | |
127 fd_sess_destroy(psess) | |
128 delete_session_pptr(psess) | |
129 | |
130 | |
131 # Routing data | |
132 prtd = new_rt_data_pptr() | |
133 fd_rtd_init(prtd) | |
134 fd_rtd_candidate_add(rt_data_pptr_value(prtd), "p1.testbed.aaa", "testbed.aaa") | |
135 fd_rtd_candidate_add(rt_data_pptr_value(prtd), "p2.testbed.aaa", "testbed.aaa") | |
136 fd_rtd_candidate_add(rt_data_pptr_value(prtd), "p3.testbed.aaa", "testbed.aaa") | |
137 fd_rtd_candidate_del(rt_data_pptr_value(prtd), "p2.testbed.aaa", 0) | |
138 pcands = new_fd_list_pptr() | |
139 fd_rtd_candidate_extract(rt_data_pptr_value(prtd), pcands, 0) | |
140 li = fd_list_pptr_value(pcands) | |
141 li = fd_list_next_get(li) | |
142 c = fd_list_to_rtd_candidate(li) | |
143 rtd_candidate_diamid_get(c) | |
144 li = fd_list_next_get(li) | |
145 c = fd_list_to_rtd_candidate(li) | |
146 rtd_candidate_diamid_get(c) | |
147 | |
148 | |
149 # Messages | |
150 gdict = fd_config_cnf_dict_get(cvar.fd_g_config) | |
151 pobj = new_dict_object_pptr() | |
152 fd_dict_search ( gdict, DICT_COMMAND, CMD_BY_NAME, char_to_void("Capabilities-Exchange-Request"), pobj, -1 ) | |
153 cerdict = dict_object_pptr_value(pobj) | |
154 fd_dict_search ( gdict, DICT_AVP, AVP_BY_NAME, char_to_void("Origin-Host"), pobj, -1 ) | |
155 ohdict = dict_object_pptr_value(pobj) | |
156 delete_dict_object_pptr(pobj) | |
157 | |
158 pmsg = new_msg_pptr() | |
159 fd_msg_new(cerdict, MSGFL_ALLOC_ETEID, pmsg) | |
160 msg = msg_pptr_value(pmsg); | |
161 pavp = new_avp_pptr() | |
162 fd_msg_avp_new(ohdict, 0, pavp) | |
163 avp = avp_pptr_value(pavp); | |
164 fd_msg_avp_add(msg, MSG_BRW_FIRST_CHILD, avp) | |
165 fd_msg_dump_walk(0, msg) | |
166 | |
167 pahdr = new_avp_hdr_pptr() | |
168 fd_msg_avp_hdr(avp, pahdr) | |
169 ahdr = avp_hdr_pptr_value(pahdr) | |
170 delete_avp_hdr_pptr(pahdr) | |
171 avp_hdr_avp_code_get(ahdr) | |
172 os = new_avp_value_os() | |
173 avp_value_os_fromstr(os, fd_config_cnf_diamid_get(cvar.fd_g_config)) | |
174 val = new_avp_value() | |
175 avp_value_os_set(val, os) | |
176 delete_avp_value_os(os) | |
177 fd_msg_avp_setvalue(avp, val) | |
178 delete_avp_value(val) | |
179 | |
180 r,buf = fd_msg_bufferize_py(msg) | |
181 fd_msg_free(msg) | |
182 delete_avp_pptr(pavp) | |
183 |