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
"Welcome to our mercurial repository"