X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vppapigen%2Fpyvppapigen.py;h=ea669517c3ecda18573559c2b19471c399550508;hb=e2e95ce6550a28a6ba5870c9c550acb619883f1a;hp=75d6a1416fa3ddad098a9da6eb114a0db71868d5;hpb=69a9b76d648a108e0a7fad4404b218ebdd6a8ea5;p=vpp.git diff --git a/vppapigen/pyvppapigen.py b/vppapigen/pyvppapigen.py index 75d6a1416fa..ea669517c3e 100755 --- a/vppapigen/pyvppapigen.py +++ b/vppapigen/pyvppapigen.py @@ -34,6 +34,7 @@ format_struct = {'u8': 'B', 'i32' : 'i', 'u64' : 'Q', 'f64' : 'd', + 'vl_api_fib_path_t' : 'IIBBBBBBBBBBBBBBBBBBBBB', 'vl_api_ip4_fib_counter_t' : 'IBQQ', 'vl_api_ip6_fib_counter_t' : 'QQBQQ', 'vl_api_lisp_adjacency_t' : 'B' * 35 @@ -47,6 +48,7 @@ type_size = {'u8': 1, 'i32' : 4, 'u64' : 8, 'f64' : 8, + 'vl_api_fib_path_t' : 29, 'vl_api_ip4_fib_counter_t' : 21, 'vl_api_ip6_fib_counter_t' : 33, 'vl_api_lisp_adjacency_t' : 35 @@ -150,11 +152,20 @@ def encode_print(name, id, t): # first, deal with all the other fields pack = '>' + ''.join([get_pack(f)[0] for f in t[:-1]]) - # now see if the last field is a vla - if len(t[-1]) >= 3 and t[-1][2] == '0': + # named variable-length-array + if len(t[-1]) == 4 and t[-1][2] == '0' and t[-1][3] == t[-2][1]: + print(u" vpp_api.write(pack('" + pack + "', base + " + + id + ", 0, context, " + ', '.join(args[3:-2] + ["len(" + args[-1] + ")"]) + + ") + " + args[-1] + ")") + + # unnamed variable-length-array + elif len(t[-1]) >= 3 and t[-1][2] == '0': print(u" vpp_api.write(pack('" + pack + "', base + " + id + ", 0, context, " + ', '.join(args[3:-1]) + ") + " + args[-1] + ")") + + + # not a variable-length-array else: pack += get_pack(t[-1])[0] print(u" vpp_api.write(pack('" + pack + "', base + " + id +