aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet
AgeCommit message (Expand)AuthorFilesLines
2017-06-26VPP-889: MAP Stats API/CLI crashes when no domains.Ole Troan2-1/+11
2017-06-25VPP crash on creating vxlan gpe interface. VPP-875Hongjun Ni3-6/+11
2017-06-23IP4/IP6 FIB: fix crash during interface deletePavel Kotucek4-1/+42
2017-06-22Update lisp map record default ttl to 24hv17.10-rc0Florin Coras1-2/+2
2017-06-22Improve svm fifo and tcp tx path performance (VPP-846)Florin Coras6-25/+137
2017-06-22VNET:explicitly pad l2_classifyEyal Bari1-10/+4
2017-06-21Introduce default rx mode for device driversDamjan Marion4-6/+18
2017-06-21ARP: ignore non-connected routes and non-interface sources when determing if ...Neale Ranns2-33/+104
2017-06-20vlib: make runtime_data handling thread-localIgor Mikhailov (imichail)1-16/+26
2017-06-20VPP-879 MAP: s/u32 is_add/u8 is_add in map.apiOle Troan1-1/+1
2017-06-19L2FWD:fix seq_num overwritten + validate l2fib entries when forwardingEyal Bari8-56/+99
2017-06-19Overall tcp performance improvements (VPP-846)Florin Coras17-426/+664
2017-06-19NAT64: Hairpinning (VPP-699)Matus Fabian2-28/+49
2017-06-17Fix map-notify processing with multiple workersFlorin Coras2-13/+44
2017-06-16LISP-GPE: add test CLI for NSHFilip Tehlar2-0/+132
2017-06-16Add missing barrier sync to rx placement infra codeDamjan Marion2-6/+18
2017-06-16Fix vni/dp_table endianness for gpe iface addition (VPP-882)Florin Coras1-6/+8
2017-06-16Fix gpe_native_fwd_rpaths_get (VPP-883)Florin Coras1-1/+3
2017-06-15Add VAT handlers for LISP-GPE APIFilip Tehlar2-11/+24
2017-06-14Fix session api connect sock handler.Dave Wallace1-1/+10
2017-06-14ETH:fix l2_len/vlan count mismatch for > 2 tagsEyal Bari3-16/+7
2017-06-13FIB walk process - wake-up rate unnecessarily highNeale Ranns1-1/+11
2017-06-12L2FIB:fix crash in show with deleted subif entriesEyal Bari1-4/+7
2017-06-12NAT64: bug fixMatus Fabian1-5/+9
2017-06-12Remove calls to crc_u32 and add clib_crc32c for armv8+crcChristophe Fontaine1-26/+16
2017-06-12Fix coverity issueFilip Tehlar1-0/+1
2017-06-10MPLS: cannot delete a path from the CLINeale Ranns1-13/+25
2017-06-09Fix gpe coverity issue (VPP-874)Florin Coras1-3/+8
2017-06-09Implement sack based tcp loss recovery (RFC 6675)Florin Coras13-405/+967
2017-06-09NAT64: ICMP error supportMatus Fabian1-8/+5
2017-06-08LISP: add NSH supportFilip Tehlar12-32/+579
2017-06-08Add gpe native-forward static route supportFlorin Coras5-16/+402
2017-06-08P2P Ethernet - APIPavel Kotucek5-0/+303
2017-06-07Small update to session APIFlorin Coras2-1/+5
2017-06-07VPP-874: fix coverity warning in vnet_classify.cDave Barach1-1/+1
2017-06-07VPP-872 and End.T function for SRv6Pablo Camarillo2-105/+101
2017-06-06Fix coverity error in IP4 Mtrie.Neale Ranns1-4/+4
2017-06-06Packets recieved on VLAN-0 map to the main interfaceNeale Ranns2-164/+32
2017-06-06Fix coverity issueFilip Tehlar1-0/+3
2017-06-06Rework vxlan-gpe to support FIB 2.0 and bypass modeHongjun Ni8-86/+1168
2017-06-06Fix lisp map-notify parsingFlorin Coras1-0/+1
2017-06-05LISP-GPE: return index of newly created fwd entry, VPP-868Filip Tehlar4-2/+20
2017-06-05LISP: fix GPE entry dump, VPP-871Filip Tehlar1-5/+5
2017-06-04Fix typo for specifying table_id on ping.wenxian li1-1/+1
2017-06-03Fix for gcc7Marco Varlese1-1/+1
2017-06-02vhost: add debug vhost-user on | off CLISteven2-20/+59
2017-06-01Fix 'ip probe' on /32Neale Ranns3-44/+48
2017-06-01MPLS trace the EOS bit correctlyNeale Ranns1-1/+2
2017-06-01IP Mcast - recalculate on interface up/dowmNeale Ranns3-60/+91
2017-06-01Improve fifo allocator performanceDave Barach12-204/+300
pper, func['name']) if (util.is_dump(camel_case_name_upper)): callback_type += "Details" elif (not util.is_notification(camel_case_name_upper)): callback_type += "Reply" callback_type += callback_gen.callback_suffix if len(func['args']) == 0: methods.append(no_arg_method_template.substitute(name=camel_case_name, base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=callback_type)) methods_impl.append(no_arg_method_impl_template.substitute(name=camel_case_name, base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=callback_type)) else: methods.append(method_template.substitute(name=camel_case_name, request=camel_case_name_upper, base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=callback_type)) methods_impl.append(method_impl_template.substitute(name=camel_case_name, request=camel_case_name_upper, base_package=base_package, plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=callback_type)) join = os.path.join(callback_facade_package, "CallbackJVpp%s.java" % plugin_name) jvpp_file = open(join, 'w') jvpp_file.write( jvpp_ifc_template.substitute(inputfile=inputfile, methods="\n".join(methods), base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, callback_facade_package=callback_facade_package)) jvpp_file.flush() jvpp_file.close() jvpp_file = open(os.path.join(callback_facade_package, "CallbackJVpp%sFacade.java" % plugin_name), 'w') jvpp_file.write(jvpp_impl_template.substitute(inputfile=inputfile, methods="\n".join(methods_impl), base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, callback_facade_package=callback_facade_package)) jvpp_file.flush() jvpp_file.close() generate_callback(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, callback_facade_package, inputfile) jvpp_facade_callback_template = Template(""" package $plugin_package.$callback_facade_package; /** * <p>Implementation of JVppGlobalCallback interface for Java Callback API. * <br>It was generated by jvpp_callback_facade_gen.py based on $inputfile * <br>(python representation of api file generated by vppapigen). */ public final class CallbackJVpp${plugin_name}FacadeCallback implements $plugin_package.$callback_package.JVpp${plugin_name}GlobalCallback { private final java.util.Map<Integer, $base_package.$callback_package.JVppCallback> requests; private final $plugin_package.$notification_package.Global${plugin_name}EventCallback eventCallback; private static final java.util.logging.Logger LOG = java.util.logging.Logger.getLogger(CallbackJVpp${plugin_name}FacadeCallback.class.getName()); public CallbackJVpp${plugin_name}FacadeCallback(final java.util.Map<Integer, $base_package.$callback_package.JVppCallback> requestMap, final $plugin_package.$notification_package.Global${plugin_name}EventCallback eventCallback) { this.requests = requestMap; this.eventCallback = eventCallback; } @Override public void onError($base_package.VppCallbackException reply) { $base_package.$callback_package.JVppCallback failedCall; synchronized(requests) { failedCall = requests.remove(reply.getCtxId()); } if(failedCall != null) { try { failedCall.onError(reply); } catch(RuntimeException ex) { ex.addSuppressed(reply); LOG.log(java.util.logging.Level.WARNING, String.format("Callback: %s failed while handling exception: %s", failedCall, reply), ex); } } } @Override @SuppressWarnings("unchecked") public void onControlPingReply(final $base_package.$dto_package.ControlPingReply reply) { $base_package.$callback_package.ControlPingCallback callback; final int replyId = reply.context; synchronized(requests) { callback = ($base_package.$callback_package.ControlPingCallback) requests.remove(replyId); } if(callback != null) { callback.onControlPingReply(reply); } } $methods } """) jvpp_facade_callback_method_template = Template(""" @Override @SuppressWarnings("unchecked") public void on$callback_dto(final $plugin_package.$dto_package.$callback_dto reply) { $plugin_package.$callback_package.$callback callback; final int replyId = reply.context; if (LOG.isLoggable(java.util.logging.Level.FINE)) { LOG.fine(String.format("Received $callback_dto event message: %s", reply)); } synchronized(requests) { callback = ($plugin_package.$callback_package.$callback) requests.remove(replyId); } if(callback != null) { callback.on$callback_dto(reply); } } """) jvpp_facade_callback_notification_method_template = Template(""" @Override @SuppressWarnings("unchecked") public void on$callback_dto($plugin_package.$dto_package.$callback_dto notification) { if (LOG.isLoggable(java.util.logging.Level.FINE)) { LOG.fine(String.format("Received $callback_dto event message: %s", notification)); } eventCallback.on$callback_dto(notification); } """) def generate_callback(func_list, base_package, plugin_package, plugin_name, dto_package, callback_package, notification_package, callback_facade_package, inputfile): callbacks = [] for func in func_list: camel_case_name_with_suffix = util.underscore_to_camelcase_upper(func['name']) if util.is_ignored(func['name']) or util.is_control_ping(camel_case_name_with_suffix): continue if util.is_reply(camel_case_name_with_suffix): request_method = camel_case_name_with_suffix callbacks.append(jvpp_facade_callback_method_template.substitute(plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=camel_case_name_with_suffix + callback_gen.callback_suffix, callback_dto=request_method)) if util.is_notification(func["name"]): callbacks.append(jvpp_facade_callback_notification_method_template.substitute(plugin_package=plugin_package, dto_package=dto_package, callback_package=callback_package, callback=camel_case_name_with_suffix + callback_gen.callback_suffix, callback_dto=camel_case_name_with_suffix)) jvpp_file = open(os.path.join(callback_facade_package, "CallbackJVpp%sFacadeCallback.java" % plugin_name), 'w') jvpp_file.write(jvpp_facade_callback_template.substitute(inputfile=inputfile, base_package=base_package, plugin_package=plugin_package, plugin_name=plugin_name, dto_package=dto_package, notification_package=notification_package, callback_package=callback_package, methods="".join(callbacks), callback_facade_package=callback_facade_package)) jvpp_file.flush() jvpp_file.close() # Returns request name or special one from unconventional_naming_rep_req map def get_request_name(camel_case_dto_name, func_name): if func_name in reverse_dict(util.unconventional_naming_rep_req): request_name = util.underscore_to_camelcase_upper(reverse_dict(util.unconventional_naming_rep_req)[func_name]) else: request_name = camel_case_dto_name return remove_suffix(request_name) def reverse_dict(map): return dict((v, k) for k, v in map.iteritems()) def remove_suffix(name): if util.is_reply(name): return util.remove_reply_suffix(name) else: if util.is_dump(name): return util.remove_suffix(name, util.dump_suffix) else: return name