Mercurial > hg > freeDiameter
annotate doc/dbg_interactive.py.sample @ 1228:e5010975da35
Fix typo in comment.
author | Thomas Klausner <tk@giga.or.at> |
---|---|
date | Thu, 18 Jul 2013 14:45:37 +0200 |
parents | f0b328ea2fdb |
children |
rev | line source |
---|---|
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
1 # Example file for the dbg_interactive.fdx extension. |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
2 # |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
3 # This extension provides an interactive python interpreter console that allows |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
4 # interacting with freeDiameter framework. |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
5 # |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
6 # The adaptation layer between Python and C is provided by SWIG (http://swig.org). |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
7 # You may refer to SWIG documentation for more information on how the wrapper is generated and used. |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
8 # The name of the module wrapping freeDiameter framework is: _fDpy |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
9 # |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
10 # Similar to all freeDiameter extensions, an optional filename can be specified in the |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
11 # main freeDiameter.conf configuration file for the dbg_interactive.fdx extension. |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
12 # If such file is provided, it will be passed to the python interpreter as a python script |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
13 # to execute. Otherwise, the interpreter will be interactive. |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
14 # |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
15 # SWIG deals with structures as follow: |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
16 # Given the structure: |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
17 # struct foo { int a; } |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
18 # The following functions are available to python (their C equivalent processing is given in [ ]): |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
19 # s = new_foo() [ s = calloc(1, sizeof(struct foo)) ] |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
20 # foo_a_set(s, 2) [ s->a = 2 ] |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
21 # foo_a_get(s) [ returns s->a value ] |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
22 # delete_foo(s) [ free(s) ] |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
23 # |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
24 # In addition, thanks to the proxy (aka shadow) class, we can also do the more user-friendly: |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
25 # s = foo() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
26 # s.a = 2 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
27 # s.a |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
28 # del s |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
29 # |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
30 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
31 # The remaining of this file gives some examples of how to use the python interpreter. |
1169
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
32 # Note that at the moment not 100% of the framework is usable. |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
33 # You may have to extend some classes or write some typemaps in the source code |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
34 # of the extension to do what you want. |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
35 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
36 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
37 ############# Compilation-time constants (from freeDiameter-host.h) ############ |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
38 |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
39 # Display current version |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
40 print "%s %d.%d.%d" % (FD_PROJECT_NAME, FD_PROJECT_VERSION_MAJOR, FD_PROJECT_VERSION_MINOR, FD_PROJECT_VERSION_REV) |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
41 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
42 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
43 ############# Debug ############ |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
44 |
623
fc4f5815f0aa
Continued work on dbg_interactive.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
622
diff
changeset
|
45 # Change the global debug level of the framework (cvar contains all global variables) |
1169
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
46 cvar.fd_g_debug_lvl = 1 |
623
fc4f5815f0aa
Continued work on dbg_interactive.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
622
diff
changeset
|
47 |
fc4f5815f0aa
Continued work on dbg_interactive.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
622
diff
changeset
|
48 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
49 # Turn on debug for a specific function (if framework compiled with DEBUG support) |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
50 cvar.fd_debug_one_function = "gc_th_fct" |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
51 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
52 |
623
fc4f5815f0aa
Continued work on dbg_interactive.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
622
diff
changeset
|
53 # Print messages to freeDiameter's debug facility |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
54 # Note: the python version does not support printf-like argument list. The formating should be done in python. |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
55 # See SWIG documentation about varargs functions for more information. |
1169
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
56 fd_log(FD_LOG_NOTICE, "3 + 4 = %d" % (7)) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
57 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
58 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
59 # Display some framework state information |
1169
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
60 conf = fd_conf_dump(); |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
61 print conf; |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
62 |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
63 fd_peer_dump_list(0) |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
64 fd_servers_dump(0) |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
65 fd_ext_dump(0) |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
66 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
67 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
68 ############# Global variables ############ |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
69 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
70 # Display the local Diameter Identity: |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
71 print "Local Diameter Identity:", cvar.fd_g_config.cnf_diamid |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
72 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
73 # Display realm, using the low-level functions (skip proxy classe definitions): |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
74 print "Realm:", _fDpy.fd_config_cnf_diamrlm_get(_fDpy.cvar.fd_g_config) |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
75 |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
76 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
77 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
78 ############# Lists ############ |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
79 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
80 # Note: we use different names from the C API here, for usability. |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
81 l1 = fd_list() # Will be our sentinel |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
82 l2 = fd_list() |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
83 l3 = fd_list() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
84 l1.isempty() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
85 l1.insert_next(l2) # l1 -> l2 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
86 l1.isempty() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
87 l1.insert_prev(l3) # l1 -> l2 -> l3 (circular list) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
88 l1.dump() |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
89 l3.detach() # l1 -> l2 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
90 l4=fd_list() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
91 l5=fd_list() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
92 l3.insert_next(l4) # l3 -> l4 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
93 l3.insert_next(l5) # l3 -> l5 -> l4 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
94 l1.concat(l3) # l1 -> l2 -> l5 -> l4 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
95 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
96 elements = l1.enum_as() # default: enumerates as fd_list. Warning: this a copy, changing the python list has no effect on the underlying fd_list. |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
97 for li in elements: |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
98 li.dump() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
99 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
100 del elements |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
101 del l2 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
102 del l3 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
103 del l4 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
104 del l5 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
105 l1.isempty() # The destructor has an implicit fd_list_unlink call |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
106 del l1 |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
107 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
108 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
109 ############# Hash ############ |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
110 |
706
4ffbc9f1e922
Large UNTESTED commit with the following changes:
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
688
diff
changeset
|
111 hex(fd_os_hash("hello world")) # It accepts binary data |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
112 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
113 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
114 ############# Dictionary ############ |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
115 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
116 ##### Create a dedicated dictionary for our tests |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
117 d = dictionary() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
118 d.dump() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
119 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
120 # New vendor |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
121 v = dict_vendor_data() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
122 v.vendor_id = 123 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
123 v.vendor_name = "My test vendor" |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
124 my_vendor = d.new_obj(DICT_VENDOR, v) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
125 del v |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
126 d.dump() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
127 d.vendors_list() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
128 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
129 # Compact invocation also possible: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
130 v2 = dict_vendor_data(124, "My test vendor 2") |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
131 del v2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
132 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
133 # New application |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
134 a = dict_application_data() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
135 a.application_id = 99 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
136 a.application_name = "My test appl" |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
137 my_appl = d.new_obj(DICT_APPLICATION, a, my_vendor) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
138 del a |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
139 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
140 a2 = dict_application_data(99, "My test appl 2") |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
141 del a2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
142 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
143 # New type (callbacks are not supported yet...) |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
144 t = dict_type_data() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
145 t.type_base = AVP_TYPE_INTEGER32 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
146 t.type_name = "My integer AVP" |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
147 my_type_int = d.new_obj(DICT_TYPE, t, my_appl) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
148 t.type_base = AVP_TYPE_OCTETSTRING |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
149 t.type_name = "My binary buffer AVP" |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
150 my_type_os = d.new_obj(DICT_TYPE, t, my_appl) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
151 del t |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
152 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
153 t2 = dict_type_data(AVP_TYPE_UNSIGNED32, "u32 type") |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
154 del t2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
155 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
156 # Constants |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
157 c = dict_enumval_data() |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
158 c.enum_name = "AVP_VALUE_TROIS" |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
159 c.enum_value.i32 = 3 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
160 d.new_obj(DICT_ENUMVAL, c, my_type_int) |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
161 |
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
162 c.enum_name = "A_BUFFER_CONSTANT" |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
163 c.enum_value.os = "This is a very long AVP value that we prefer to represent as a constant" |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
164 c.enum_value.os.dump() |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
165 d.new_obj(DICT_ENUMVAL, c, my_type_os) |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
166 del c |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
167 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
168 c2 = dict_enumval_data("enum 23", 23) # The constructor only accepts unsigned32, for other values, set them afterwards |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
169 c3 = dict_enumval_data("enum other") |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
170 c3.os = "other value" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
171 del c2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
172 del c3 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
173 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
174 # AVP |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
175 a = dict_avp_data() |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
176 a.avp_code = 234 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
177 a.avp_name = "my integer avp" |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
178 a.avp_flag_mask = AVP_FLAG_MANDATORY |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
179 a.avp_basetype = AVP_TYPE_INTEGER32 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
180 my_avp_int = d.new_obj(DICT_AVP, a, my_type_int) |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
181 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
182 a.avp_vendor = 123 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
183 a.avp_name = "my OS avp" |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
184 a.avp_flag_mask = AVP_FLAG_MANDATORY + AVP_FLAG_VENDOR |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
185 a.avp_flag_val = AVP_FLAG_VENDOR |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
186 a.avp_basetype = AVP_TYPE_OCTETSTRING |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
187 my_avp_os = d.new_obj(DICT_AVP, a, my_type_os) |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
188 del a |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
189 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
190 a2 = dict_avp_data(235, "no vendor, not mandatory", AVP_TYPE_OCTETSTRING) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
191 a3 = dict_avp_data(236, "vendor 12, not mandatory", AVP_TYPE_OCTETSTRING, 12) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
192 a4 = dict_avp_data(237, "vendor 12, mandatory", AVP_TYPE_OCTETSTRING, 12, 1) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
193 a5 = dict_avp_data(238, "no vendor, mandatory", AVP_TYPE_OCTETSTRING, 0, 1) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
194 del a2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
195 del a3 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
196 del a4 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
197 del a5 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
198 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
199 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
200 # Command |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
201 c = dict_cmd_data() |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
202 c.cmd_code = 345 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
203 c.cmd_name = "My-Python-Request" |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
204 c.cmd_flag_mask = CMD_FLAG_REQUEST + CMD_FLAG_PROXIABLE |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
205 c.cmd_flag_val = CMD_FLAG_REQUEST + CMD_FLAG_PROXIABLE |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
206 my_req = d.new_obj(DICT_COMMAND, c, my_appl) |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
207 c.cmd_name = "My-Python-Answer" |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
208 c.cmd_flag_val = CMD_FLAG_PROXIABLE |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
209 my_ans = d.new_obj(DICT_COMMAND, c, my_appl) |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
210 del c |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
211 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
212 c2 = dict_cmd_data(346, "Second-Request", 1) # Default created with PROXIABLE flag. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
213 c3 = dict_cmd_data(346, "Second-Answer", 0) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
214 del c2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
215 del c3 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
216 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
217 # Rule |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
218 r = dict_rule_data() |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
219 r.rule_avp = my_avp_int |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
220 r.rule_position = RULE_REQUIRED |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
221 r.rule_min = -1 |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
222 r.rule_max = -1 |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
223 d.new_obj(DICT_RULE, r, my_req) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
224 d.new_obj(DICT_RULE, r, my_ans) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
225 r.rule_avp = my_avp_os |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
226 d.new_obj(DICT_RULE, r, my_req) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
227 d.new_obj(DICT_RULE, r, my_ans) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
228 del r |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
229 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
230 r2 = dict_rule_data(my_avp_int, RULE_REQUIRED) # min & max are optional parameters, default to -1 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
231 r3 = dict_rule_data(my_avp_int, RULE_REQUIRED, 2, 3) # min is 2, max is 3 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
232 r4 = dict_rule_data(my_avp_int, RULE_FIXED_HEAD) # The r4.rule_order = 1 by default, change afterwards if needed. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
233 del r2 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
234 del r3 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
235 del r4 |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
236 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
237 d.dump() |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
238 del d |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
239 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
240 ####### Now play with the "real" dictionary |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
241 |
627
330be61dbf43
Improvements to usability, still work ongoing
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
624
diff
changeset
|
242 gdict = cvar.fd_g_config.cnf_dict |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
243 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
244 appl = gdict.search ( DICT_APPLICATION, APPLICATION_BY_ID, 3 ) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
245 appl.dump() |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
246 avp = gdict.search ( DICT_AVP, AVP_BY_NAME, "Origin-Host") |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
247 avp.dump() |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
248 errcmd = gdict.error_cmd() |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
249 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
250 v = avp.getval() |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
251 print v.avp_code |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
252 del v |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
253 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
254 t = avp.gettype() |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
255 print t |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
256 del t |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
257 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
258 dict = avp.getdict() |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
259 del dict |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
260 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
261 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
262 ############# Sessions ############ |
624
a5682d003ed9
Finally got the proxy aka shadow class to work
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
623
diff
changeset
|
263 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
264 # handler |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
265 def my_cleanup(state,sid): |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
266 print "Cleaning up python state for session:", sid |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
267 print "Received state:", state |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
268 del state |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
269 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
270 hdl = session_handler(my_cleanup) |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
271 hdl.dump() |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
272 del hdl |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
273 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
274 # Session |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
275 hdl = session_handler(my_cleanup) |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
276 s1 = session() |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
277 s1.getsid() |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
278 s2 = session("this.is.a.full.session.id") |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
279 r,s3,isnew = fd_sess_fromsid("this.is.a.full.session.id") # use this call if "isnew" is really needed... |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
280 s4 = session("host.id", "optional.part") |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
281 s4.settimeout(30) # the python wrapper takes a number of seconds as parameter for simplicity |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
282 s4.dump() |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
283 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
284 # states |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
285 mystate = [ 34, "blah", [ 32, 12 ] ] |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
286 s1.store(hdl, mystate) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
287 del mystate |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
288 gotstate = s1.retrieve(hdl) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
289 print gotstate |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
290 del gotstate |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
291 |
624
a5682d003ed9
Finally got the proxy aka shadow class to work
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
623
diff
changeset
|
292 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
293 ############# Routing ############ |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
294 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
295 rd = rt_data() |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
296 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
297 rd.add("p1.testbed.aaa", "testbed.aaa") |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
298 rd.add("p2.testbed.aaa", "testbed.aaa") |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
299 rd.add("p3.testbed.aaa", "testbed.aaa") |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
300 rd.add("p4.testbed.aaa", "testbed.aaa") |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
301 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
302 rd.remove("p2.testbed.aaa") |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
303 |
636
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
304 rd.error("p3.testbed.aaa", "relay.testbed.aaa", 3002) |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
305 |
c23ca590fa57
Still making progress on the dbg_interactive interface.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
635
diff
changeset
|
306 list = rd.extract(-1) |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
307 for c in list.enum_as("struct rtd_candidate *"): |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
308 print "%s (%s): %s" % (c.diamid, c.realm, c.score) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
309 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
310 del rd |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
311 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
312 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
313 # A rt_fwd callback has the following prototype: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
314 def my_rtfwd_cb(msg): |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
315 print "Forwarding the following message:" |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
316 msg.dump() |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
317 return [ 0, msg ] # return None instead of msg to stop forwarding. |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
318 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
319 fwdhdl = fd_rt_fwd_hdl( my_rtfwd_cb, RT_FWD_REQ ) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
320 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
321 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
322 # A rt_out cb has the following prototype: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
323 def my_rtout_cb(msg, list): |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
324 print "Sending out the following message:" |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
325 msg.dump() |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
326 print "The possible candidates are:" |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
327 for c in list.enum_as("struct rtd_candidate *"): |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
328 print "%s (%s): %s" % (c.diamid, c.realm, c.score) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
329 return 0 # returns an error code (standard errno values) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
330 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
331 outhdl = fd_rt_out_hdl( my_rtout_cb ) # a priority can be specified as 2nd parameter, default is 0. |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
332 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
333 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
334 |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
335 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
336 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
337 ############# Messages, AVPs ############ |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
338 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
339 ## AVP |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
340 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
341 # Create empty |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
342 blank_avp = avp() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
343 del blank_avp |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
344 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
345 # Create from dictionary definitions |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
346 oh = avp(cvar.fd_g_config.cnf_dict.search ( DICT_AVP, AVP_BY_NAME, "Origin-Host")) # Octet String |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
347 vi = avp(cvar.fd_g_config.cnf_dict.search ( DICT_AVP, AVP_BY_NAME, "Vendor-Id")) # U32 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
348 vsai = avp(cvar.fd_g_config.cnf_dict.search ( DICT_AVP, AVP_BY_NAME, "Vendor-Specific-Application-Id")) # Grouped |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
349 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
350 # Set values |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
351 val = avp_value() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
352 val.u32 = 123 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
353 vi.setval(None) # this cleans a previous value (usually not needed) |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
354 vi.setval(val) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
355 val.os = "my.origin.host" |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
356 oh.setval(val) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
357 vsai.add_child(vi) # call as add_child(vi, 1) to add the new AVP at the beginning, default is at the end |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
358 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
359 # It is possible to initialize the AVP with a blank value as follow: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
360 blank_with_value = avp(None, AVPFL_SET_BLANK_VALUE) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
361 # it enables this without doing the setval call: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
362 blank_with_value.header().avp_value.u32 = 12 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
363 |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
364 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
365 ## Messages |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
366 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
367 # Create empt (as for avps, pass None or a dictionary object as 1st param, and flags as optional 2nd param)y |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
368 a_msg = msg() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
369 a_msg.dump() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
370 del a_msg |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
371 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
372 # It is also possible to pass MSGFL_* flags in second parameter (ALLOC_ETEID is default) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
373 msg_no_eid = msg(None, 0) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
374 msg_no_eid.dump() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
375 del msg_no_eid |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
376 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
377 # Create from dictionary |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
378 dwr_dict = cvar.fd_g_config.cnf_dict.search ( DICT_COMMAND, CMD_BY_NAME, "Device-Watchdog-Request" ) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
379 dwr = msg(dwr_dict) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
380 dwr.dump() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
381 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
382 # Create msg from a binary buffer (then you should call parse_dict and parse_rules methods) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
383 dwr2 = msg("\x01\x00\x00\x14\x80\x00\x01\x18\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xf0\x00\x01") |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
384 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
385 # Create answer from request (optional parameters: dictionary to use, and flags): |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
386 dwr3 = msg(cvar.fd_g_config.cnf_dict.search ( DICT_COMMAND, CMD_BY_NAME, "Device-Watchdog-Request" )) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
387 dwa3 = dwr3.create_answer() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
388 dwr3cpy = dwa3.get_query() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
389 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
390 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
391 ## Other functions with AVPs & messages |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
392 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
393 # Add the AVPs in the message |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
394 dwr.add_child(oh) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
395 oh.add_next(vsai) # equivalent to add_child on the parent |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
396 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
397 # Create a network byte buffer from the message |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
398 dwr.bufferize() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
399 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
400 # Get first child AVP (fast) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
401 avp = dwr.first_child() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
402 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
403 # then: |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
404 avp = avp.get_next() # when last AVP, returns None |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
405 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
406 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
407 # Get all 1st level children (slower) -- warning, changes to the python list will not be reflected on the underlying message. read-only use. |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
408 dwr.children() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
409 # example use: |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
410 for a in dwr.children(): |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
411 a.dump(0) # 0 means: dump only this object, do not walk the tree |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
412 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
413 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
414 # Search the first AVP of a given type |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
415 oh_dict = cvar.fd_g_config.cnf_dict.search( DICT_AVP, AVP_BY_NAME, "Origin-Host") |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
416 oh = dwr.search( oh_dict ) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
417 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
418 # After adding AVPs, the length in the message header is outdated, refresh as follow: |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
419 dwr.update_length() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
420 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
421 # Get dictionary model for a message or avp |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
422 dwr.model() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
423 oh.model().dump() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
424 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
425 # Retrieve the header of messages & avp: |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
426 dwr_hdr = dwr.header() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
427 dwr_hdr.msg_version |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
428 dwr_hdr.msg_hbhid |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
429 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
430 oh_hdr = oh.header() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
431 hex(oh_hdr.avp_flags) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
432 oh_hdr.avp_vendor |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
433 oh_hdr.avp_value.os.as_str() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
434 |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
435 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
436 # Get or set the routing data |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
437 rd = rt_data() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
438 dwr.set_rtd(rd) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
439 rd = dwr.get_rtd() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
440 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
441 # Test if message is routable |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
442 dwr.is_routable() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
443 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
444 # Which peer the message was received from (when received from network) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
445 dwr.source() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
446 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
447 # The session corresponding to this message (returns None when no Session-Id AVP is included) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
448 dwr.get_session() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
449 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
450 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
451 # Parse a buffer |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
452 buf = "\x01\x00\x00@\x80\x00\x01\x18\x00\x00\x00\x00\x00\x00\x00\x00N\x10\x00\x00\x00\x00\x01\x08@\x00\x00\x16my.origin.host\x00\x00\x00\x00\x01\x04@\x00\x00\x14\x00\x00\x01\n@\x00\x00\x0c\x00\x00\x00{" |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
453 mydwr = msg(buf) |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
454 # Resolve objects in the dictionary. Return value is None or a struct pei_error in case of problem. |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
455 mydwr.parse_dict() # if not using the fD global dict, pass it as parameter |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
456 err = mydwr.parse_rules() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
457 err.pei_errcode |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
458 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
459 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
460 # Grouped AVPs are browsed with same methods as messages: |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
461 gavp = dwr.children()[1] |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
462 gavp.first_child().dump() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
463 gavp.children() |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
464 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
465 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
466 # Send a message: |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
467 mydwr = msg(buf) |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
468 mydwr.send() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
469 |
1228 | 470 # Optionally, a callback can be registered when a request is sent, with an optional object. |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
471 # This callback takes the answer message as parameter and should return None or a message. (cf. fd_msg_send) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
472 def send_callback(msg, obj): |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
473 print "Received answer:" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
474 msg.dump() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
475 print "Associated data:" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
476 obj |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
477 return None |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
478 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
479 mydwr = msg(buf) |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
480 mydwr.send(send_callback, some_object) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
481 |
1228 | 482 # Again optionally, a time limit can be specified in this case as follow: |
649
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
483 mydwr.send(send_callback, some_object, 10) |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
484 # In that case, if no answer / error is received after 10 seconds (the value specified), |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
485 # the callback is called with the request as parameter. |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
486 # Testing for timeout case is done by using msg.is_request() |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
487 def send_callback(msg, obj): |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
488 if (msg.is_request()): |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
489 print "Request timed out without answer:" |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
490 else: |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
491 print "Received answer:" |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
492 msg.dump() |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
493 print "Associated data:" |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
494 obj |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
495 return None |
5e5d8152c229
Implemented fd_msg_send_timeout to close #10. Not tested yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
641
diff
changeset
|
496 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
497 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
498 # Set a result code in an answer message. |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
499 mydwr = msg(buf) |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
500 dwa = mydwr.create_answer() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
501 dwa.rescode_set() # This adds the DIAMETER_SUCCESS result code |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
502 dwa.rescode_set("DIAMETER_LIMITED_SUCCESS" ) # This adds a different result code |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
503 dwa.rescode_set("DIAMETER_LIMITED_SUCCESS", "Something went not so well" ) # This adds a different result code + specified Error-Message |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
504 dwa.rescode_set("DIAMETER_INVALID_AVP", None, faulty_avp ) # This adds a Failed-AVP |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
505 dwa.rescode_set("DIAMETER_SUCCESS", None, None, 1 ) # This adds origin information (see fd_msg_rescode_set's type_id for more info) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
506 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
507 # Set the origin to local host |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
508 mydwr.add_origin() # adds Origin-Host & Origin-Realm |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
509 mydwr.add_origin(1) # adds Origin-State-Id in addition. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
510 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
511 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
512 ############# DISPATCH (aka. server application) ############ |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
513 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
514 # As for sessions, only one dispatch handler can be registered in this extension at the moment. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
515 # The callback for the handler has the following syntax: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
516 def dispatch_cb_model(inmsg, inavp, insession): |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
517 print "Callback trigged on message: " |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
518 inmsg.dump() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
519 # inavp is None or the AVP that trigged the callback, depending on how it was registered. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
520 if inavp: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
521 print "From the following AVP:" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
522 inavp.dump() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
523 else: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
524 print "No AVP" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
525 # Session is provided only if a Session-Id is in the message |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
526 if insession: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
527 print "The session is: ", insession.getsid() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
528 else: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
529 print "No session" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
530 # Now, for the return value. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
531 # This callback must return 3 elements: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
532 # - an integer which is interpreted as an error code (errno.h) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
533 # - a message or None, depending on the next item |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
534 # - an enum disp_action value, with the same meaning as in C (see libfreeDiameter.h) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
535 del inmsg |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
536 return [ 0, None, DISP_ACT_CONT ] |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
537 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
538 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
539 ### Example use: rebuild the server-side of test_app.fdx in python |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
540 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
541 # The following block defines the dictionary objects from the test_app.fdx application that we use on the remote peer |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
542 gdict = cvar.fd_g_config.cnf_dict |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
543 d_si = gdict.search ( DICT_AVP, AVP_BY_NAME, "Session-Id" ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
544 d_oh = gdict.search ( DICT_AVP, AVP_BY_NAME, "Origin-Host" ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
545 d_or = gdict.search ( DICT_AVP, AVP_BY_NAME, "Origin-Realm" ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
546 d_dh = gdict.search ( DICT_AVP, AVP_BY_NAME, "Destination-Host" ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
547 d_dr = gdict.search ( DICT_AVP, AVP_BY_NAME, "Destination-Realm" ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
548 d_rc = gdict.search ( DICT_AVP, AVP_BY_NAME, "Result-Code" ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
549 d_vnd = gdict.new_obj(DICT_VENDOR, dict_vendor_data(999999, "app_test_py vendor") ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
550 d_app = gdict.new_obj(DICT_APPLICATION, dict_application_data(0xffffff, "app_test_py appli"), d_vnd) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
551 d_req = gdict.new_obj(DICT_COMMAND, dict_cmd_data(0xfffffe, "Test_py-Request", 1), d_app) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
552 d_ans = gdict.new_obj(DICT_COMMAND, dict_cmd_data(0xfffffe, "Test_py-Answer", 0), d_app) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
553 d_avp = gdict.new_obj(DICT_AVP, dict_avp_data(0xffffff, "app_test_py avp", AVP_TYPE_INTEGER32, 999999 )) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
554 gdict.new_obj(DICT_RULE, dict_rule_data(d_si, RULE_FIXED_HEAD, 1, 1), d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
555 gdict.new_obj(DICT_RULE, dict_rule_data(d_si, RULE_FIXED_HEAD, 1, 1), d_ans) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
556 gdict.new_obj(DICT_RULE, dict_rule_data(d_avp, RULE_REQUIRED, 1, 1), d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
557 gdict.new_obj(DICT_RULE, dict_rule_data(d_avp, RULE_REQUIRED, 1, 1), d_ans) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
558 gdict.new_obj(DICT_RULE, dict_rule_data(d_oh, RULE_REQUIRED, 1, 1), d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
559 gdict.new_obj(DICT_RULE, dict_rule_data(d_oh, RULE_REQUIRED, 1, 1), d_ans) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
560 gdict.new_obj(DICT_RULE, dict_rule_data(d_or, RULE_REQUIRED, 1, 1), d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
561 gdict.new_obj(DICT_RULE, dict_rule_data(d_or, RULE_REQUIRED, 1, 1), d_ans) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
562 gdict.new_obj(DICT_RULE, dict_rule_data(d_dr, RULE_REQUIRED, 1, 1), d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
563 gdict.new_obj(DICT_RULE, dict_rule_data(d_dh, RULE_OPTIONAL, 0, 1), d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
564 gdict.new_obj(DICT_RULE, dict_rule_data(d_rc, RULE_REQUIRED, 1, 1), d_ans) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
565 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
566 # Now, create the Test_app server callback: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
567 def test_app_cb(inmsg, inavp, insession): |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
568 tval = inmsg.search(d_avp).header().avp_value.u32 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
569 print "Py ECHO Test message from '%s' with test value %x, replying..." % (inmsg.search(d_oh).header().avp_value.os.as_str(), tval) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
570 answ = inmsg.create_answer() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
571 answ.rescode_set() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
572 answ.add_origin() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
573 ta = avp(d_avp, AVPFL_SET_BLANK_VALUE) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
574 ta.header().avp_value.u32 = tval |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
575 answ.add_child(ta) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
576 return [ 0, answ, DISP_ACT_SEND ] |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
577 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
578 # Register the callback for dispatch thread: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
579 hdl = disp_hdl(test_app_cb, DISP_HOW_CC, disp_when(d_app, d_req)) # disp_when() takes 0 to 4 arguments as follow: (app=NULL, cmd=NULL, avp=NULL, val=NULL) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
580 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
581 # Don't forget to register the application in the daemon for CER/CEA capabilities. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
582 fd_disp_app_support ( d_app, d_vnd, 1, 0 ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
583 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
584 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
585 ### For the fun, the client part of the test_app: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
586 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
587 def receive_answer(ans, testval): |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
588 try: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
589 tval = ans.search(d_avp).header().avp_value.u32 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
590 except: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
591 print "Error in receive_answer: no Test-AVP included" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
592 tval = 0 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
593 try: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
594 print "Py RECV %x (expected: %x) Status: %d From: '%s'" % (tval, testval, ans.search(d_rc).header().avp_value.u32, ans.search(d_oh).header().avp_value.os.as_str()) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
595 except: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
596 print "Error in receive_answer: Result-Code or Origin-Host are missing" |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
597 del ans |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
598 return None |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
599 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
600 import random |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
601 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
602 def send_query(destrealm="localdomain"): |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
603 qry = msg(d_req) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
604 sess = session() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
605 tv = random.randint(1, 1<<32) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
606 # Session-Id |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
607 a = avp(d_si, AVPFL_SET_BLANK_VALUE) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
608 a.header().avp_value.os = sess.getsid() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
609 qry.add_child(a) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
610 # Destination-Realm |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
611 a = avp(d_dr, AVPFL_SET_BLANK_VALUE) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
612 a.header().avp_value.os = destrealm |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
613 qry.add_child(a) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
614 # Origin-Host, Origin-Realm |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
615 qry.add_origin() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
616 # Test-AVP |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
617 a = avp(d_avp, AVPFL_SET_BLANK_VALUE) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
618 a.header().avp_value.u32 = tv |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
619 qry.add_child(a) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
620 print "Py SEND %x to '%s'" % (tv, destrealm) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
621 qry.send(receive_answer, tv) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
622 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
623 send_query() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
624 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
625 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
626 ############# FIFO queues ############ |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
627 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
628 myqueue = fifo() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
629 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
630 # enqueue any object |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
631 myqueue.post(3) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
632 myqueue.post("blah") |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
633 myqueue.post( [ 3, 2 ] ) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
634 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
635 # Simple get (blocks when the queue is empty) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
636 myqueue.get() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
637 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
638 # Try get: returns the next object, or None if the queue is empty |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
639 myqueue.tryget() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
640 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
641 # timed get: like get, but returns None after x seconds |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
642 myqueue.timedget(3) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
643 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
644 # Show the number of items in the queue |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
645 myqueue.length() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
646 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
647 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
648 ## Variants: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
649 # All the previous calls are suitable to queue Python objects. |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
650 # In order to interact with objects queued / poped by C counterpart, |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
651 # a second parameter must be passed to specify the object type, |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
652 # as follow: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
653 ev = fd_event() |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
654 ev.code = FDEV_DUMP_EXT |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
655 cvar.fd_g_config.cnf_main_ev.post(ev, "struct fd_event *") |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
656 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
657 # Similarly, for *get, we can specify the structure that was queued: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
658 myqueue.get("struct fd_event *") |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
659 myqueue.tryget("struct fd_event *") |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
660 myqueue.timedget(3, "struct fd_event *") |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
661 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
662 del myqueue |
637
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
663 |
22e8fac3b2d6
Split interface file in modules
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
636
diff
changeset
|
664 |
1169
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
665 ############# HOOKS ############ |
11724ff78638
Some cleanups in dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1078
diff
changeset
|
666 |
1176
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
667 def my_hook_cb(type, msg, peer, other, oldpmd): |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
668 print "callback type ", type, " called: ", msg, other, oldpmd |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
669 return "this is the new pmd" |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
670 |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
671 # Create a wrapped fd_hook_data_hdl: |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
672 datahdl = fd_hook_data_hdl() |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
673 |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
674 # Register the hook callback: |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
675 hdl = fd_hook_hdl(1 << HOOK_MESSAGE_SENT, my_hook_cb, datahdl) |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
676 |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
677 |
f0b328ea2fdb
Added initial support for hooks in the dbg_interactive extension
Sebastien Decugis <sdecugis@freediameter.net>
parents:
1169
diff
changeset
|
678 |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
679 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
680 ############# PEERS ############ |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
681 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
682 # Get the list of peers defined in the system |
641
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
683 # (we are supposed to readlock fd_g_peers_rw before accessing this list) |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
684 cvar.fd_g_peers_rw.rdlock() |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
685 peers = cvar.fd_g_peers.enum_as("struct peer_hdr *") |
641
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
686 cvar.fd_g_peers_rw.unlock() |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
687 for p in peers: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
688 print "Peer:", p.info.pi_diamid |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
689 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
690 |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
691 # Create a new peer |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
692 np = peer_info() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
693 np.pi_diamid = "nas.localdomain" |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
694 np.config.pic_flags.pro4 = PI_P4_TCP |
635
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
695 |
134e4fb9eef5
Continued work on python interface
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
627
diff
changeset
|
696 |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
697 # Add this peer into the framework. |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
698 np.add() |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
699 |
639
95a784729cac
Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
638
diff
changeset
|
700 # It is possible to specify a callback for when the connection completes or fails with this peer. |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
701 # The prototype is as follow: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
702 def add_cb(peer): |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
703 if peer: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
704 if peer.runtime.pir_state == STATE_OPEN: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
705 print "Connection to peer '%s' completed" % (peer.pi_diamid) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
706 # can find more information in peer.runtime.* |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
707 else: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
708 print "Connection to peer '%s' failed (state:%d)" % (peer.pi_diamid, peer.runtime.pir_state) |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
709 else: |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
710 print "The peer has been destroyed before it completed the connection." |
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
711 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
712 # Then add the peer like this: |
638
9448cba86673
Improved usability of dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
637
diff
changeset
|
713 np.add(add_cb) |
622
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
714 |
cfbf7ed5dccd
Added some limited example for dbg_interactive
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
715 |
640
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
716 # Search a peer by its diameter id (returns a peer_hdr object if found) -- similar to fd_peer_getbyid |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
717 p = peer_search("nas.domain.aaa") |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
718 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
719 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
720 ## Validation callback (see fd_peer_validate_register documentation) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
721 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
722 # cb2 prototype: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
723 def my_validate_cb2(pinfo): |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
724 print "Cb2 callback trigged for peer %s" % (pinfo.pi_diamid) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
725 # Usually, this would be used only to check some TLS properties, |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
726 # which is not really possible yet through the python interpreter... |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
727 return 0 # return an error code if the peer is not validated |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
728 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
729 # cb prototype: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
730 def my_validate_cb(pinfo): |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
731 print "Validate callback trigged for peer %s" % (pinfo.pi_diamid) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
732 # If the peer is not allowed to connect: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
733 #return -1 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
734 # If the peer is authorized: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
735 #return 1 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
736 # In addition, if IPsec is allowed, |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
737 #pinfo.config.pic_flags.sec = PI_SEC_NONE |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
738 # If no decision has been made: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
739 #return 0 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
740 # If the peer is temporarily authorized but a second callback must be called after TLS negociation: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
741 return my_validate_cb2 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
742 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
743 # Register the callback, it will be called on new incoming connections. |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
744 peer_validate_register(my_validate_cb) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
745 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
746 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
747 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
748 ############# ENDPOINTS ############ |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
749 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
750 ep = fd_endpoint("129.168.168.192") |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
751 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
752 # with port: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
753 ep = fd_endpoint("129.168.168.192", 3868) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
754 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
755 # With different flags: |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
756 ep = fd_endpoint("129.168.168.192", 3868, EP_FL_PRIMARY) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
757 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
758 # Add IP information for the peer |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
759 np = peer_info() |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
760 ep.add_merge(np.pi_endpoints) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
761 fd_ep_dump(0, np.pi_endpoints) |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
762 |
237cf6339546
dbg_interactive almost complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
639
diff
changeset
|
763 |
641
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
764 |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
765 ############# POSIX functions wrappers ############ |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
766 |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
767 # The interface also provides wrappers around base POSIX |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
768 # synchronization functions: |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
769 |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
770 m = pthread_mutex_t() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
771 m.lock() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
772 m.unlock() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
773 |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
774 c = pthread_cond_t() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
775 c.signal() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
776 c.broadcast() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
777 c.wait(m) |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
778 c.timedwait(m, 5) # it takes a relative time |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
779 |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
780 r = pthread_rwlock_t() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
781 r.rdlock() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
782 r.unlock() |
69d3579f6c6c
First version of dbg_interactive is complete
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
640
diff
changeset
|
783 r.wrlock() |