X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Ftools%2Fvppapigen%2Fvppapigen_c.py;fp=src%2Ftools%2Fvppapigen%2Fvppapigen_c.py;h=26a348f3910454374adb49177ef65879c078363c;hb=139b2da5c533a84faca0ae1bf5b37c3185d9d4fb;hp=5ca2ed51ff6b81ef38eb1b2b63cb44430de3001a;hpb=3b5ab65bd3a821dd82acfc34069293ff39dc1ef7;p=vpp.git diff --git a/src/tools/vppapigen/vppapigen_c.py b/src/tools/vppapigen/vppapigen_c.py old mode 100644 new mode 100755 index 5ca2ed51ff6..26a348f3910 --- a/src/tools/vppapigen/vppapigen_c.py +++ b/src/tools/vppapigen/vppapigen_c.py @@ -1250,6 +1250,11 @@ static inline void vl_api_{name}_t_endian (vl_api_{name}_t *a) output += signature.format(name=t.name) + # make Array type appear before the others: + # some arrays have dynamic length, and we want to iterate over + # them before changing endiann for the length field + t.block.sort(key=lambda x: x.type) + for o in t.block: output += endianfun_obj(o) output += "}\n\n" @@ -1576,6 +1581,31 @@ def generate_c_boilerplate(services, defines, counters, file_crc, module, stream except KeyError: pass + try: + if s.stream: + d = define_hash[s.stream_message] + write( + " c = (vl_msg_api_msg_config_t) " + "{{.id = VL_API_{ID} + msg_id_base,\n" + ' .name = "{n}",\n' + " .handler = 0,\n" + " .endian = vl_api_{n}_t_endian,\n" + " .format_fn = vl_api_{n}_t_format,\n" + " .traced = 1,\n" + " .replay = 1,\n" + " .tojson = vl_api_{n}_t_tojson,\n" + " .fromjson = vl_api_{n}_t_fromjson,\n" + " .calc_size = vl_api_{n}_t_calc_size,\n" + " .is_autoendian = {auto}}};\n".format( + n=s.stream_message, + ID=s.stream_message.upper(), + auto=d.autoendian, + ) + ) + write(" vl_msg_api_config (&c);\n") + except KeyError: + pass + write(" return msg_id_base;\n") write("}\n")